summaryrefslogtreecommitdiffstats
path: root/documentation/ref-manual
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/ref-manual')
-rw-r--r--documentation/ref-manual/TODO11
-rw-r--r--documentation/ref-manual/classes.rst3217
-rw-r--r--documentation/ref-manual/devtool-reference.rst253
-rw-r--r--documentation/ref-manual/examples/hello-autotools/hello_2.10.bb9
-rw-r--r--documentation/ref-manual/examples/hello-single/files/helloworld.c8
-rw-r--r--documentation/ref-manual/examples/hello-single/hello.bb17
-rw-r--r--documentation/ref-manual/examples/libxpm/libxpm_3.5.6.bb14
-rw-r--r--documentation/ref-manual/examples/mtd-makefile/mtd-utils_1.0.0.bb15
-rw-r--r--documentation/ref-manual/faq.rst659
-rw-r--r--documentation/ref-manual/features.rst277
-rw-r--r--documentation/ref-manual/fragments.rst250
-rw-r--r--documentation/ref-manual/history.rst74
-rw-r--r--documentation/ref-manual/images.rst60
-rw-r--r--documentation/ref-manual/index.rst4
-rw-r--r--documentation/ref-manual/kickstart.rst92
-rw-r--r--documentation/ref-manual/migration-1.3.rst195
-rw-r--r--documentation/ref-manual/migration-1.4.rst237
-rw-r--r--documentation/ref-manual/migration-1.5.rst353
-rw-r--r--documentation/ref-manual/migration-1.6.rst416
-rw-r--r--documentation/ref-manual/migration-1.7.rst223
-rw-r--r--documentation/ref-manual/migration-1.8.rst183
-rw-r--r--documentation/ref-manual/migration-2.0.rst281
-rw-r--r--documentation/ref-manual/migration-2.1.rst436
-rw-r--r--documentation/ref-manual/migration-2.2.rst450
-rw-r--r--documentation/ref-manual/migration-2.3.rst523
-rw-r--r--documentation/ref-manual/migration-2.4.rst327
-rw-r--r--documentation/ref-manual/migration-2.5.rst310
-rw-r--r--documentation/ref-manual/migration-2.6.rst457
-rw-r--r--documentation/ref-manual/migration-2.7.rst180
-rw-r--r--documentation/ref-manual/migration-3.0.rst320
-rw-r--r--documentation/ref-manual/migration-3.1.rst276
-rw-r--r--documentation/ref-manual/migration-3.2.rst313
-rw-r--r--documentation/ref-manual/migration-general.rst54
-rw-r--r--documentation/ref-manual/migration.rst31
-rw-r--r--documentation/ref-manual/qa-checks.rst1249
-rw-r--r--documentation/ref-manual/release-process.rst129
-rw-r--r--documentation/ref-manual/resources.rst104
-rw-r--r--documentation/ref-manual/structure.rst299
-rw-r--r--documentation/ref-manual/svg/releases.svg1898
-rw-r--r--documentation/ref-manual/system-requirements.rst457
-rw-r--r--documentation/ref-manual/tasks.rst282
-rw-r--r--documentation/ref-manual/terms.rst350
-rw-r--r--documentation/ref-manual/variables.rst7952
-rw-r--r--documentation/ref-manual/varlocality.rst2
-rw-r--r--documentation/ref-manual/yocto-project-supported-features.rst267
45 files changed, 12105 insertions, 11409 deletions
diff --git a/documentation/ref-manual/TODO b/documentation/ref-manual/TODO
deleted file mode 100644
index ee0db977cc..0000000000
--- a/documentation/ref-manual/TODO
+++ /dev/null
@@ -1,11 +0,0 @@
1Handbook Todo List:
2
3 * Document adding a new IMAGE_FEATURE to the customising images section
4 * Add instructions about using zaurus/openmoko emulation
5 * Add component overview/block diagrams
6 * Software Deevelopment intro should mention its software development for
7 intended target and could be a different arch etc and thus special case.
8 * Expand insane.bbclass documentation to cover tests
9 * Document remaining classes (see list in ref-classes)
10 * Document formfactor
11
diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst
index be112e0faf..662121ed9c 100644
--- a/documentation/ref-manual/classes.rst
+++ b/documentation/ref-manual/classes.rst
@@ -13,8 +13,14 @@ some default behavior.
13 13
14Any :term:`Metadata` usually found in a recipe can also be 14Any :term:`Metadata` usually found in a recipe can also be
15placed in a class file. Class files are identified by the extension 15placed in a class file. Class files are identified by the extension
16``.bbclass`` and are usually placed in a ``classes/`` directory beneath 16``.bbclass`` and are usually placed in one of a set of subdirectories
17the ``meta*/`` directory found in the :term:`Source Directory`. 17beneath the ``meta*/`` directory found in the :term:`Source Directory`:
18
19 - ``classes-recipe/`` - classes intended to be inherited by recipes
20 individually
21 - ``classes-global/`` - classes intended to be inherited globally
22 - ``classes/`` - classes whose usage context is not clearly defined
23
18Class files can also be pointed to by 24Class files can also be pointed to by
19:term:`BUILDDIR` (e.g. ``build/``) in the same way as 25:term:`BUILDDIR` (e.g. ``build/``) in the same way as
20``.conf`` files in the ``conf`` directory. Class files are searched for 26``.conf`` files in the ``conf`` directory. Class files are searched for
@@ -22,16 +28,16 @@ in :term:`BBPATH` using the same method by which ``.conf``
22files are searched. 28files are searched.
23 29
24This chapter discusses only the most useful and important classes. Other 30This chapter discusses only the most useful and important classes. Other
25classes do exist within the ``meta/classes`` directory in the Source 31classes do exist within the ``meta/classes*`` directories in the Source
26Directory. You can reference the ``.bbclass`` files directly for more 32Directory. You can reference the ``.bbclass`` files directly for more
27information. 33information.
28 34
29.. _ref-classes-allarch: 35.. _ref-classes-allarch:
30 36
31``allarch.bbclass`` 37``allarch``
32=================== 38===========
33 39
34The ``allarch`` class is inherited by recipes that do not produce 40The :ref:`ref-classes-allarch` class is inherited by recipes that do not produce
35architecture-specific output. The class disables functionality that is 41architecture-specific output. The class disables functionality that is
36normally needed for recipes that produce executable binaries (such as 42normally needed for recipes that produce executable binaries (such as
37building the cross-compiler and a C library as pre-requisites, and 43building the cross-compiler and a C library as pre-requisites, and
@@ -43,42 +49,43 @@ splitting out of debug symbols during packaging).
43 produce packages that depend on tunings through use of the 49 produce packages that depend on tunings through use of the
44 :term:`RDEPENDS` and 50 :term:`RDEPENDS` and
45 :term:`TUNE_PKGARCH` variables, should never be 51 :term:`TUNE_PKGARCH` variables, should never be
46 configured for all architectures using ``allarch``. This is the case 52 configured for all architectures using :ref:`ref-classes-allarch`. This is the case
47 even if the recipes do not produce architecture-specific output. 53 even if the recipes do not produce architecture-specific output.
48 54
49 Configuring such recipes for all architectures causes the 55 Configuring such recipes for all architectures causes the
50 ``do_package_write_*`` tasks to 56 :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks to
51 have different signatures for the machines with different tunings. 57 have different signatures for the machines with different tunings.
52 Additionally, unnecessary rebuilds occur every time an image for a 58 Additionally, unnecessary rebuilds occur every time an image for a
53 different ``MACHINE`` is built even when the recipe never changes. 59 different :term:`MACHINE` is built even when the recipe never changes.
54 60
55By default, all recipes inherit the :ref:`base <ref-classes-base>` and 61By default, all recipes inherit the :ref:`ref-classes-base` and
56:ref:`package <ref-classes-package>` classes, which enable 62:ref:`ref-classes-package` classes, which enable
57functionality needed for recipes that produce executable output. If your 63functionality needed for recipes that produce executable output. If your
58recipe, for example, only produces packages that contain configuration 64recipe, for example, only produces packages that contain configuration
59files, media files, or scripts (e.g. Python and Perl), then it should 65files, media files, or scripts (e.g. Python and Perl), then it should
60inherit the ``allarch`` class. 66inherit the :ref:`ref-classes-allarch` class.
61 67
62.. _ref-classes-archiver: 68.. _ref-classes-archiver:
63 69
64``archiver.bbclass`` 70``archiver``
65==================== 71============
66 72
67The ``archiver`` class supports releasing source code and other 73The :ref:`ref-classes-archiver` class supports releasing source code and other
68materials with the binaries. 74materials with the binaries.
69 75
70For more details on the source archiver, see the 76For more details on the source :ref:`ref-classes-archiver`, see the
71":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`" 77":ref:`dev-manual/licenses:maintaining open source license compliance during your product's lifecycle`"
72section in the Yocto Project Development Tasks Manual. You can also see 78section in the Yocto Project Development Tasks Manual. You can also see
73the :term:`ARCHIVER_MODE` variable for information 79the :term:`ARCHIVER_MODE` variable for information
74about the variable flags (varflags) that help control archive creation. 80about the variable flags (varflags) that help control archive creation.
75 81
76.. _ref-classes-autotools: 82.. _ref-classes-autotools:
77 83
78``autotools*.bbclass`` 84``autotools*``
79====================== 85==============
80 86
81The ``autotools*`` classes support Autotooled packages. 87The :ref:`autotools* <ref-classes-autotools>` classes support packages built with the
88:wikipedia:`GNU Autotools <GNU_Autotools>`.
82 89
83The ``autoconf``, ``automake``, and ``libtool`` packages bring 90The ``autoconf``, ``automake``, and ``libtool`` packages bring
84standardization. This class defines a set of tasks (e.g. ``configure``, 91standardization. This class defines a set of tasks (e.g. ``configure``,
@@ -86,16 +93,16 @@ standardization. This class defines a set of tasks (e.g. ``configure``,
86should usually be enough to define a few standard variables and then 93should usually be enough to define a few standard variables and then
87simply ``inherit autotools``. These classes can also work with software 94simply ``inherit autotools``. These classes can also work with software
88that emulates Autotools. For more information, see the 95that emulates Autotools. For more information, see the
89":ref:`dev-manual/common-tasks:autotooled package`" section 96":ref:`dev-manual/new-recipe:building an autotooled package`" section
90in the Yocto Project Development Tasks Manual. 97in the Yocto Project Development Tasks Manual.
91 98
92By default, the ``autotools*`` classes use out-of-tree builds (i.e. 99By default, the :ref:`autotools* <ref-classes-autotools>` classes use out-of-tree builds (i.e.
93``autotools.bbclass`` building with ``B != S``). 100``autotools.bbclass`` building with ``B != S``).
94 101
95If the software being built by a recipe does not support using 102If the software being built by a recipe does not support using
96out-of-tree builds, you should have the recipe inherit the 103out-of-tree builds, you should have the recipe inherit the
97``autotools-brokensep`` class. The ``autotools-brokensep`` class behaves 104:ref:`autotools-brokensep <ref-classes-autotools>` class. The :ref:`autotools-brokensep <ref-classes-autotools>` class behaves
98the same as the ``autotools`` class but builds with :term:`B` 105the same as the :ref:`ref-classes-autotools` class but builds with :term:`B`
99== :term:`S`. This method is useful when out-of-tree build 106== :term:`S`. This method is useful when out-of-tree build
100support is either not present or is broken. 107support is either not present or is broken.
101 108
@@ -105,35 +112,71 @@ support is either not present or is broken.
105 all possible. 112 all possible.
106 113
107It's useful to have some idea of how the tasks defined by the 114It's useful to have some idea of how the tasks defined by the
108``autotools*`` classes work and what they do behind the scenes. 115:ref:`autotools* <ref-classes-autotools>` classes work and what they do behind the scenes.
109 116
110- :ref:`ref-tasks-configure` - Regenerates the 117- :ref:`ref-tasks-configure` --- regenerates the
111 configure script (using ``autoreconf``) and then launches it with a 118 configure script (using ``autoreconf``) and then launches it with a
112 standard set of arguments used during cross-compilation. You can pass 119 standard set of arguments used during cross-compilation. You can pass
113 additional parameters to ``configure`` through the ``EXTRA_OECONF`` 120 additional parameters to ``configure`` through the :term:`EXTRA_OECONF`
114 or :term:`PACKAGECONFIG_CONFARGS` 121 or :term:`PACKAGECONFIG_CONFARGS`
115 variables. 122 variables.
116 123
117- :ref:`ref-tasks-compile` - Runs ``make`` with 124- :ref:`ref-tasks-compile` --- runs ``make`` with
118 arguments that specify the compiler and linker. You can pass 125 arguments that specify the compiler and linker. You can pass
119 additional arguments through the ``EXTRA_OEMAKE`` variable. 126 additional arguments through the :term:`EXTRA_OEMAKE` variable.
120 127
121- :ref:`ref-tasks-install` - Runs ``make install`` and 128- :ref:`ref-tasks-install` --- runs ``make install`` and
122 passes in ``${``\ :term:`D`\ ``}`` as ``DESTDIR``. 129 passes in ``${``\ :term:`D`\ ``}`` as ``DESTDIR``.
123 130
131.. _ref-classes-barebox:
132
133``barebox``
134===========
135
136The :ref:`ref-classes-barebox` class manages building the barebox bootloader.
137
138If a file named ``defconfig`` is included in the :term:`SRC_URI`, it will be
139copied to ``.config`` in the build directory and used as the barebox
140configuration.
141Instead of providing a ``defconfig`` file, you can set :term:`BAREBOX_CONFIG`
142to a defconfig provided by the barebox source tree.
143If neither ``defconfig`` nor :term:`BAREBOX_CONFIG` is specified, the class
144will raise an error.
145
146The :ref:`ref-classes-barebox` class supports config fragments and internally
147includes the :ref:`ref-classes-cml1` class to provide `Kconfig
148<https://docs.kernel.org/kbuild/kconfig-language.html>`__ support for
149barebox, enabling tasks such as :ref:`ref-tasks-menuconfig` and
150:ref:`ref-tasks-diffconfig`.
151
152The generated barebox binaries are deployed to
153:term:`DEPLOY_DIR_IMAGE` as well as installed to ``BAREBOX_INSTALL_PATH``
154(``/boot`` by default) making them part of the recipe’s base package.
155This setup supports both using the barebox binaries as independent artifacts
156and installing them into a rootfs.
157:term:`BAREBOX_BINARY` can be used to select a distinct binary to deploy and
158install.
159If ``barebox`` is set as the :term:`EFI_PROVIDER`, the class will leverage
160:oe_git:`conf/image-uefi.conf </openembedded-core/tree/meta/conf/image-uefi.conf>`
161to define the default installation paths and naming conventions.
162
163The compiled-in barebox environment can be extended by adding environment files
164to the ``BAREBOX_ENV_DIR``.
165The ``BAREBOX_FIRMWARE_DIR`` variable allows you to specify the firmware blob
166search directory, enabling loading of additional firmware like TF-A or OP-TEE.
167
124.. _ref-classes-base: 168.. _ref-classes-base:
125 169
126``base.bbclass`` 170``base``
127================ 171========
128 172
129The ``base`` class is special in that every ``.bb`` file implicitly 173The :ref:`ref-classes-base` class is special in that every ``.bb`` file implicitly
130inherits the class. This class contains definitions for standard basic 174inherits the class. This class contains definitions for standard basic
131tasks such as fetching, unpacking, configuring (empty by default), 175tasks such as fetching, unpacking, configuring (empty by default),
132compiling (runs any ``Makefile`` present), installing (empty by default) 176compiling (runs any ``Makefile`` present), installing (empty by default)
133and packaging (empty by default). These classes are often overridden or 177and packaging (empty by default). These tasks are often overridden or
134extended by other classes such as the 178extended by other classes such as the :ref:`ref-classes-autotools` class or the
135:ref:`autotools <ref-classes-autotools>` class or the 179:ref:`ref-classes-package` class.
136:ref:`package <ref-classes-package>` class.
137 180
138The class also contains some commonly used functions such as 181The class also contains some commonly used functions such as
139``oe_runmake``, which runs ``make`` with the arguments specified in 182``oe_runmake``, which runs ``make`` with the arguments specified in
@@ -142,47 +185,56 @@ arguments passed directly to ``oe_runmake``.
142 185
143.. _ref-classes-bash-completion: 186.. _ref-classes-bash-completion:
144 187
145``bash-completion.bbclass`` 188``bash-completion``
146=========================== 189===================
147 190
148Sets up packaging and dependencies appropriate for recipes that build 191Sets up packaging and dependencies appropriate for recipes that build
149software that includes bash-completion data. 192software that includes bash-completion data.
150 193
151.. _ref-classes-bin-package: 194.. _ref-classes-bin-package:
152 195
153``bin_package.bbclass`` 196``bin_package``
154======================= 197===============
155 198
156The ``bin_package`` class is a helper class for recipes that extract the 199The :ref:`ref-classes-bin-package` class is a helper class for recipes, that
157contents of a binary package (e.g. an RPM) and install those contents 200disables the :ref:`ref-tasks-configure` and :ref:`ref-tasks-compile` tasks and
158rather than building the binary from source. The binary package is 201copies the content of the :term:`S` directory into the :term:`D` directory. This
159extracted and new packages in the configured output package format are 202is useful for installing binary packages (e.g. RPM packages) by passing the
160created. Extraction and installation of proprietary binaries is a good 203package in the :term:`SRC_URI` variable and inheriting this class.
161example use for this class.
162 204
163.. note:: 205For RPMs and other packages that do not contain a subdirectory, you should set
206the :term:`SRC_URI` option ``subdir`` to :term:`BP` so that the contents are
207extracted to the directory expected by the default value of :term:`S`. For
208example::
164 209
165 For RPMs and other packages that do not contain a subdirectory, you 210 SRC_URI = "https://example.com/downloads/somepackage.rpm;subdir=${BP}"
166 should specify an appropriate fetcher parameter to point to the
167 subdirectory. For example, if BitBake is using the Git fetcher (``git://``),
168 the "subpath" parameter limits the checkout to a specific subpath
169 of the tree. Here is an example where ``${BP}`` is used so that the files
170 are extracted into the subdirectory expected by the default value of
171 ``S``:
172 ::
173 211
174 SRC_URI = "git://example.com/downloads/somepackage.rpm;subpath=${BP}" 212This class can also be used for tarballs. For example::
175 213
214 SRC_URI = "file://somepackage.tar.xz;subdir=${BP}"
176 215
177 See the ":ref:`bitbake-user-manual/bitbake-user-manual-fetching:fetchers`" section in the BitBake User Manual for 216The :ref:`ref-classes-bin-package` class will copy the extracted content of the
178 more information on supported BitBake Fetchers. 217tarball from :term:`S` to :term:`D`.
218
219This class assumes that the content of the package as installed in :term:`S`
220mirrors the expected layout once installed on the target, which is generally the
221case for binary packages. For example, an RPM package for a library would
222usually contain the ``usr/lib`` directory, and should be extracted to
223``${S}/usr/lib/<library>.so.<version>`` to be installed in :term:`D` correctly.
224
225.. note::
226
227 The extraction of the package passed in :term:`SRC_URI` is not handled by the
228 :ref:`ref-classes-bin-package` class, but rather by the appropriate
229 :ref:`fetcher <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
230 depending on the file extension.
179 231
180.. _ref-classes-binconfig: 232.. _ref-classes-binconfig:
181 233
182``binconfig.bbclass`` 234``binconfig``
183===================== 235=============
184 236
185The ``binconfig`` class helps to correct paths in shell scripts. 237The :ref:`ref-classes-binconfig` class helps to correct paths in shell scripts.
186 238
187Before ``pkg-config`` had become widespread, libraries shipped shell 239Before ``pkg-config`` had become widespread, libraries shipped shell
188scripts to give information about the libraries and include paths needed 240scripts to give information about the libraries and include paths needed
@@ -199,52 +251,33 @@ information.
199 251
200.. _ref-classes-binconfig-disabled: 252.. _ref-classes-binconfig-disabled:
201 253
202``binconfig-disabled.bbclass`` 254``binconfig-disabled``
203============================== 255======================
204 256
205An alternative version of the :ref:`binconfig <ref-classes-binconfig>` 257An alternative version of the :ref:`ref-classes-binconfig`
206class, which disables binary configuration scripts by making them return 258class, which disables binary configuration scripts by making them return
207an error in favor of using ``pkg-config`` to query the information. The 259an error in favor of using ``pkg-config`` to query the information. The
208scripts to be disabled should be specified using the 260scripts to be disabled should be specified using the :term:`BINCONFIG`
209:term:`BINCONFIG` variable within the recipe inheriting 261variable within the recipe inheriting the class.
210the class.
211
212.. _ref-classes-blacklist:
213
214``blacklist.bbclass``
215=====================
216
217The ``blacklist`` class prevents the OpenEmbedded build system from
218building specific recipes (blacklists them). To use this class, inherit
219the class globally and set :term:`PNBLACKLIST` for
220each recipe you wish to blacklist. Specify the :term:`PN`
221value as a variable flag (varflag) and provide a reason, which is
222reported, if the package is requested to be built as the value. For
223example, if you want to blacklist a recipe called "exoticware", you add
224the following to your ``local.conf`` or distribution configuration:
225::
226
227 INHERIT += "blacklist"
228 PNBLACKLIST[exoticware] = "Not supported by our organization."
229 262
230.. _ref-classes-buildhistory: 263.. _ref-classes-buildhistory:
231 264
232``buildhistory.bbclass`` 265``buildhistory``
233======================== 266================
234 267
235The ``buildhistory`` class records a history of build output metadata, 268The :ref:`ref-classes-buildhistory` class records a history of build output metadata,
236which can be used to detect possible regressions as well as used for 269which can be used to detect possible regressions as well as used for
237analysis of the build output. For more information on using Build 270analysis of the build output. For more information on using Build
238History, see the 271History, see the
239":ref:`dev-manual/common-tasks:maintaining build output quality`" 272":ref:`dev-manual/build-quality:maintaining build output quality`"
240section in the Yocto Project Development Tasks Manual. 273section in the Yocto Project Development Tasks Manual.
241 274
242.. _ref-classes-buildstats: 275.. _ref-classes-buildstats:
243 276
244``buildstats.bbclass`` 277``buildstats``
245====================== 278==============
246 279
247The ``buildstats`` class records performance statistics about each task 280The :ref:`ref-classes-buildstats` class records performance statistics about each task
248executed during the build (e.g. elapsed time, CPU usage, and I/O usage). 281executed during the build (e.g. elapsed time, CPU usage, and I/O usage).
249 282
250When you use this class, the output goes into the 283When you use this class, the output goes into the
@@ -258,124 +291,224 @@ Collecting build statistics is enabled by default through the
258:term:`USER_CLASSES` variable from your 291:term:`USER_CLASSES` variable from your
259``local.conf`` file. Consequently, you do not have to do anything to 292``local.conf`` file. Consequently, you do not have to do anything to
260enable the class. However, if you want to disable the class, simply 293enable the class. However, if you want to disable the class, simply
261remove "buildstats" from the ``USER_CLASSES`` list. 294remove ":ref:`ref-classes-buildstats`" from the :term:`USER_CLASSES` list.
262 295
263.. _ref-classes-buildstats-summary: 296.. _ref-classes-buildstats-summary:
264 297
265``buildstats-summary.bbclass`` 298``buildstats-summary``
266============================== 299======================
267 300
268When inherited globally, prints statistics at the end of the build on 301When inherited globally, prints statistics at the end of the build on
269sstate re-use. In order to function, this class requires the 302sstate re-use. In order to function, this class requires the
270:ref:`buildstats <ref-classes-buildstats>` class be enabled. 303:ref:`ref-classes-buildstats` class be enabled.
304
305.. _ref-classes-cargo:
306
307``cargo``
308=========
309
310The :ref:`ref-classes-cargo` class allows to compile Rust language programs
311using `Cargo <https://doc.rust-lang.org/cargo/>`__. Cargo is Rust's package
312manager, allowing to fetch package dependencies and build your program.
313
314Using this class makes it very easy to build Rust programs. All you need
315is to use the :term:`SRC_URI` variable to point to a source repository
316which can be built by Cargo, typically one that was created by the
317``cargo new`` command, containing a ``Cargo.toml`` file, a ``Cargo.lock`` file and a ``src``
318subdirectory.
319
320If you want to build and package tests of the program, inherit the
321:ref:`ref-classes-ptest-cargo` class instead of :ref:`ref-classes-cargo`.
322
323You will find an example (that show also how to handle possible git source dependencies) in the
324:oe_git:`zvariant_3.12.0.bb </openembedded-core/tree/meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb>`
325recipe. Another example, with only crate dependencies, is the
326:oe_git:`uutils-coreutils </meta-openembedded/tree/meta-oe/recipes-core/uutils-coreutils>`
327recipe, which was generated by the `cargo-bitbake <https://crates.io/crates/cargo-bitbake>`__
328tool.
329
330This class inherits the :ref:`ref-classes-cargo_common` class.
331
332.. _ref-classes-cargo_c:
333
334``cargo_c``
335===========
336
337The :ref:`ref-classes-cargo_c` class can be inherited by a recipe to generate
338a Rust library that can be called by C/C++ code. The recipe which inherits this
339class has to only replace ``inherit cargo`` by ``inherit cargo_c``.
340
341See the :yocto_git:`rust-c-lib-example_git.bb
342</poky/tree/meta-selftest/recipes-devtools/rust/rust-c-lib-example_git.bb>`
343example recipe.
344
345.. _ref-classes-cargo_common:
346
347``cargo_common``
348================
349
350The :ref:`ref-classes-cargo_common` class is an internal class
351that is not intended to be used directly.
352
353An exception is the "rust" recipe, to build the Rust compiler and runtime
354library, which is built by Cargo but cannot use the :ref:`ref-classes-cargo`
355class. This is why this class was introduced.
356
357.. _ref-classes-cargo-update-recipe-crates:
358
359``cargo-update-recipe-crates``
360===============================
361
362The :ref:`ref-classes-cargo-update-recipe-crates` class allows
363recipe developers to update the list of Cargo crates in :term:`SRC_URI`
364by reading the ``Cargo.lock`` file in the source tree.
365
366To do so, create a recipe for your program, for example using
367:doc:`devtool </ref-manual/devtool-reference>`,
368make it inherit the :ref:`ref-classes-cargo` and
369:ref:`ref-classes-cargo-update-recipe-crates` and run::
370
371 bitbake -c update_crates recipe
372
373This creates a ``recipe-crates.inc`` file that you can include in your
374recipe::
375
376 require ${BPN}-crates.inc
377
378That's also something you can achieve by using the
379`cargo-bitbake <https://crates.io/crates/cargo-bitbake>`__ tool.
271 380
272.. _ref-classes-ccache: 381.. _ref-classes-ccache:
273 382
274``ccache.bbclass`` 383``ccache``
275================== 384==========
276 385
277The ``ccache`` class enables the C/C++ Compiler Cache for the build. 386The :ref:`ref-classes-ccache` class enables the C/C++ Compiler Cache for the build.
278This class is used to give a minor performance boost during the build. 387This class is used to give a minor performance boost during the build.
279However, using the class can lead to unexpected side-effects. Thus, it 388
280is recommended that you do not use this class. See 389See https://ccache.samba.org/ for information on the C/C++ Compiler
281https://ccache.samba.org/ for information on the C/C++ Compiler 390Cache, and the :oe_git:`ccache.bbclass </openembedded-core/tree/meta/classes/ccache.bbclass>`
282Cache. 391file for details about how to enable this mechanism in your configuration
392file, how to disable it for specific recipes, and how to share ``ccache``
393files between builds.
394
395However, using the class can lead to unexpected side-effects. Thus, using
396this class is not recommended.
283 397
284.. _ref-classes-chrpath: 398.. _ref-classes-chrpath:
285 399
286``chrpath.bbclass`` 400``chrpath``
287=================== 401===========
288 402
289The ``chrpath`` class is a wrapper around the "chrpath" utility, which 403The :ref:`ref-classes-chrpath` class is a wrapper around the "chrpath" utility, which
290is used during the build process for ``nativesdk``, ``cross``, and 404is used during the build process for :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`, and
291``cross-canadian`` recipes to change ``RPATH`` records within binaries 405:ref:`ref-classes-cross-canadian` recipes to change ``RPATH`` records within binaries
292in order to make them relocatable. 406in order to make them relocatable.
293 407
294.. _ref-classes-clutter: 408.. _ref-classes-cmake:
295 409
296``clutter.bbclass`` 410``cmake``
297=================== 411=========
298 412
299The ``clutter`` class consolidates the major and minor version naming 413The :ref:`ref-classes-cmake` class allows recipes to build software using the
300and other common items used by Clutter and related recipes. 414`CMake <https://cmake.org/overview/>`__ build system. You can use the
415:term:`EXTRA_OECMAKE` variable to specify additional configuration options to
416pass to the ``cmake`` command line.
301 417
302.. note:: 418By default, the :ref:`ref-classes-cmake` class uses
419`Ninja <https://ninja-build.org/>`__ instead of GNU make for building, which
420offers better build performance. If a recipe is broken with Ninja, then the
421recipe can set the :term:`OECMAKE_GENERATOR` variable to ``Unix Makefiles`` to
422use GNU make instead.
303 423
304 Unlike some other classes related to specific libraries, recipes 424If you need to install custom CMake toolchain files supplied by the application
305 building other software that uses Clutter do not need to inherit this 425being built, you should install them (during :ref:`ref-tasks-install`) to the
306 class unless they use the same recipe versioning scheme that the 426preferred CMake Module directory: ``${D}${datadir}/cmake/modules/``.
307 Clutter and related recipes do.
308 427
309.. _ref-classes-cmake: 428.. _ref-classes-cmake-qemu:
310 429
311``cmake.bbclass`` 430``cmake-qemu``
312================= 431==============
313 432
314The ``cmake`` class allows for recipes that need to build software using 433The :ref:`ref-classes-cmake-qemu` class might be used instead of the
315the `CMake <https://cmake.org/overview/>`__ build system. You can use 434:ref:`ref-classes-cmake` class. In addition to the features provided by the
316the :term:`EXTRA_OECMAKE` variable to specify 435:ref:`ref-classes-cmake` class, the :ref:`ref-classes-cmake-qemu` class passes
317additional configuration options to be passed using the ``cmake`` 436the ``CMAKE_CROSSCOMPILING_EMULATOR`` setting to ``cmake``. This allows to use
318command line. 437QEMU user-mode emulation for the execution of cross-compiled binaries on the
438host machine. For more information about ``CMAKE_CROSSCOMPILING_EMULATOR``
439please refer to the `related section of the CMake documentation
440<https://cmake.org/cmake/help/latest/variable/CMAKE_CROSSCOMPILING_EMULATOR.html>`__.
441
442Not all platforms are supported by QEMU. This class only works for machines with
443``qemu-usermode`` in the :ref:`ref-features-machine`. Using QEMU user-mode therefore
444involves a certain risk, which is also the reason why this feature is not part of
445the main :ref:`ref-classes-cmake` class by default.
446
447One use case is the execution of cross-compiled unit tests with CTest on the build
448machine. If ``CMAKE_CROSSCOMPILING_EMULATOR`` is configured::
449
450 cmake --build --target test
451
452works transparently with QEMU user-mode.
319 453
320On the occasion that you would be installing custom CMake toolchain 454If the CMake project is developed with this use case in mind this works very nicely.
321files supplied by the application being built, you should install them 455This also applies to an IDE configured to use ``cmake-native`` for cross-compiling.
322to the preferred CMake Module directory: ``${D}${datadir}/cmake/``
323Modules during
324:ref:`ref-tasks-install`.
325 456
326.. _ref-classes-cml1: 457.. _ref-classes-cml1:
327 458
328``cml1.bbclass`` 459``cml1``
329================ 460========
330 461
331The ``cml1`` class provides basic support for the Linux kernel style 462The :ref:`ref-classes-cml1` class provides basic support for the Linux kernel style
332build configuration system. 463build configuration system. "cml" stands for "Configuration Menu Language", which
464originates from the Linux kernel but is also used in other projects such as U-Boot
465and BusyBox. It could have been called "kconfig" too.
333 466
334.. _ref-classes-compress_doc: 467.. _ref-classes-compress_doc:
335 468
336``compress_doc.bbclass`` 469``compress_doc``
337======================== 470================
338 471
339Enables compression for man pages and info pages. This class is intended 472Enables compression for manual and info pages. This class is intended
340to be inherited globally. The default compression mechanism is gz (gzip) 473to be inherited globally. The default compression mechanism is gz (gzip)
341but you can select an alternative mechanism by setting the 474but you can select an alternative mechanism by setting the
342:term:`DOC_COMPRESS` variable. 475:term:`DOC_COMPRESS` variable.
343 476
344.. _ref-classes-copyleft_compliance: 477.. _ref-classes-copyleft_compliance:
345 478
346``copyleft_compliance.bbclass`` 479``copyleft_compliance``
347=============================== 480=======================
348 481
349The ``copyleft_compliance`` class preserves source code for the purposes 482The :ref:`ref-classes-copyleft_compliance` class preserves source code for the purposes
350of license compliance. This class is an alternative to the ``archiver`` 483of license compliance. This class is an alternative to the :ref:`ref-classes-archiver`
351class and is still used by some users even though it has been deprecated 484class and is still used by some users even though it has been deprecated
352in favor of the :ref:`archiver <ref-classes-archiver>` class. 485in favor of the :ref:`ref-classes-archiver` class.
353 486
354.. _ref-classes-copyleft_filter: 487.. _ref-classes-copyleft_filter:
355 488
356``copyleft_filter.bbclass`` 489``copyleft_filter``
357=========================== 490===================
358 491
359A class used by the :ref:`archiver <ref-classes-archiver>` and 492A class used by the :ref:`ref-classes-archiver` and
360:ref:`copyleft_compliance <ref-classes-copyleft_compliance>` classes 493:ref:`ref-classes-copyleft_compliance` classes
361for filtering licenses. The ``copyleft_filter`` class is an internal 494for filtering licenses. The ``copyleft_filter`` class is an internal
362class and is not intended to be used directly. 495class and is not intended to be used directly.
363 496
364.. _ref-classes-core-image: 497.. _ref-classes-core-image:
365 498
366``core-image.bbclass`` 499``core-image``
367====================== 500==============
368 501
369The ``core-image`` class provides common definitions for the 502The :ref:`ref-classes-core-image` class provides common definitions for the
370``core-image-*`` image recipes, such as support for additional 503``core-image-*`` image recipes, such as support for additional
371:term:`IMAGE_FEATURES`. 504:term:`IMAGE_FEATURES`.
372 505
373.. _ref-classes-cpan: 506.. _ref-classes-cpan:
374 507
375``cpan*.bbclass`` 508``cpan*``
376================= 509=========
377 510
378The ``cpan*`` classes support Perl modules. 511The :ref:`cpan* <ref-classes-cpan>` classes support Perl modules.
379 512
380Recipes for Perl modules are simple. These recipes usually only need to 513Recipes for Perl modules are simple. These recipes usually only need to
381point to the source's archive and then inherit the proper class file. 514point to the source's archive and then inherit the proper class file.
@@ -388,23 +521,49 @@ authors used.
388- Modules that use ``Build.PL``-based build system require using 521- Modules that use ``Build.PL``-based build system require using
389 ``cpan_build.bbclass`` in their recipes. 522 ``cpan_build.bbclass`` in their recipes.
390 523
391Both build methods inherit the ``cpan-base`` class for basic Perl 524Both build methods inherit the :ref:`cpan-base <ref-classes-cpan>` class for basic Perl
392support. 525support.
393 526
527.. _ref-classes-create-spdx:
528
529``create-spdx``
530===============
531
532The :ref:`ref-classes-create-spdx` class provides support for
533automatically creating :term:`SPDX` :term:`SBOM` documents based upon image
534and SDK contents.
535
536This class is meant to be inherited globally from a configuration file::
537
538 INHERIT += "create-spdx"
539
540The toplevel :term:`SPDX` output file is generated in JSON format as a
541``IMAGE-MACHINE.spdx.json`` file in ``tmp/deploy/images/MACHINE/`` inside the
542:term:`Build Directory`. There are other related files in the same directory,
543as well as in ``tmp/deploy/spdx``.
544
545The exact behaviour of this class, and the amount of output can be controlled
546by the :term:`SPDX_PRETTY`, :term:`SPDX_ARCHIVE_PACKAGED`,
547:term:`SPDX_ARCHIVE_SOURCES` and :term:`SPDX_INCLUDE_SOURCES` variables.
548
549See the description of these variables and the
550":ref:`dev-manual/sbom:creating a software bill of materials`"
551section in the Yocto Project Development Manual for more details.
552
394.. _ref-classes-cross: 553.. _ref-classes-cross:
395 554
396``cross.bbclass`` 555``cross``
397================= 556=========
398 557
399The ``cross`` class provides support for the recipes that build the 558The :ref:`ref-classes-cross` class provides support for the recipes that build the
400cross-compilation tools. 559cross-compilation tools.
401 560
402.. _ref-classes-cross-canadian: 561.. _ref-classes-cross-canadian:
403 562
404``cross-canadian.bbclass`` 563``cross-canadian``
405========================== 564==================
406 565
407The ``cross-canadian`` class provides support for the recipes that build 566The :ref:`ref-classes-cross-canadian` class provides support for the recipes that build
408the Canadian Cross-compilation tools for SDKs. See the 567the Canadian Cross-compilation tools for SDKs. See the
409":ref:`overview-manual/concepts:cross-development toolchain generation`" 568":ref:`overview-manual/concepts:cross-development toolchain generation`"
410section in the Yocto Project Overview and Concepts Manual for more 569section in the Yocto Project Overview and Concepts Manual for more
@@ -412,21 +571,101 @@ discussion on these cross-compilation tools.
412 571
413.. _ref-classes-crosssdk: 572.. _ref-classes-crosssdk:
414 573
415``crosssdk.bbclass`` 574``crosssdk``
416==================== 575============
417 576
418The ``crosssdk`` class provides support for the recipes that build the 577The :ref:`ref-classes-crosssdk` class provides support for the recipes that build the
419cross-compilation tools used for building SDKs. See the 578cross-compilation tools used for building SDKs. See the
420":ref:`overview-manual/concepts:cross-development toolchain generation`" 579":ref:`overview-manual/concepts:cross-development toolchain generation`"
421section in the Yocto Project Overview and Concepts Manual for more 580section in the Yocto Project Overview and Concepts Manual for more
422discussion on these cross-compilation tools. 581discussion on these cross-compilation tools.
423 582
583.. _ref-classes-cve-check:
584
585``cve-check``
586=============
587
588The :ref:`ref-classes-cve-check` class looks for known CVEs (Common Vulnerabilities
589and Exposures) while building with BitBake. This class is meant to be
590inherited globally from a configuration file::
591
592 INHERIT += "cve-check"
593
594To filter out obsolete CVE database entries which are known not to impact software from Poky and OE-Core,
595add following line to the build configuration file::
596
597 include cve-extra-exclusions.inc
598
599You can also look for vulnerabilities in specific packages by passing
600``-c cve_check`` to BitBake.
601
602After building the software with Bitbake, CVE check output reports are available in ``tmp/deploy/cve``
603and image specific summaries in ``tmp/deploy/images/*.json`` files.
604
605When building, the CVE checker will emit build time warnings for any detected
606issues which are in the state ``Unpatched``, meaning that CVE issue seems to affect the software component
607and version being compiled and no patches to address the issue are applied. Other states
608for detected CVE issues are: ``Patched`` meaning that a patch to address the issue is already
609applied, and ``Ignored`` meaning that the issue can be ignored.
610
611The ``Patched`` state of a CVE issue is detected from patch files with the format
612``CVE-ID.patch``, e.g. ``CVE-2019-20633.patch``, in the :term:`SRC_URI` and using
613CVE metadata of format ``CVE: CVE-ID`` in the commit message of the patch file.
614
615.. note::
616
617 Commit message metadata (``CVE: CVE-ID`` in a patch header) will not be scanned
618 in any patches that are remote, i.e. that are anything other than local files
619 referenced via ``file://`` in SRC_URI. However, a ``CVE-ID`` in a remote patch
620 file name itself will be registered.
621
622If the recipe adds ``CVE-ID`` as flag of the :term:`CVE_STATUS` variable with status
623mapped to ``Ignored``, then the CVE state is reported as ``Ignored``::
624
625 CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows"
626
627If CVE check reports that a recipe contains false positives or false negatives, these may be
628fixed in recipes by adjusting the CVE product name using :term:`CVE_PRODUCT` and :term:`CVE_VERSION` variables.
629:term:`CVE_PRODUCT` defaults to the plain recipe name :term:`BPN` which can be adjusted to one or more CVE
630database vendor and product pairs using the syntax::
631
632 CVE_PRODUCT = "flex_project:flex"
633
634where ``flex_project`` is the CVE database vendor name and ``flex`` is the product name. Similarly
635if the default recipe version :term:`PV` does not match the version numbers of the software component
636in upstream releases or the CVE database, then the :term:`CVE_VERSION` variable can be used to set the
637CVE database compatible version number, for example::
638
639 CVE_VERSION = "2.39"
640
641Any bugs or missing or incomplete information in the CVE database entries should be fixed in the CVE database
642via the `NVD feedback form <https://nvd.nist.gov/info/contact-form>`__.
643
644Users should note that security is a process, not a product, and thus also CVE checking, analyzing results,
645patching and updating the software should be done as a regular process. The data and assumptions
646required for CVE checker to reliably detect issues are frequently broken in various ways.
647These can only be detected by reviewing the details of the issues and iterating over the generated reports,
648and following what happens in other Linux distributions and in the greater open source community.
649
650You will find some more details in the
651":ref:`dev-manual/vulnerabilities:checking for vulnerabilities`"
652section in the Development Tasks Manual.
653
654.. _ref-classes-cython:
655
656``cython``
657==========
658
659The :ref:`ref-classes-cython` class can be used by Python recipes that require
660`Cython <https://cython.org/>`__ as part of their build dependencies
661(:term:`DEPENDS`).
662
424.. _ref-classes-debian: 663.. _ref-classes-debian:
425 664
426``debian.bbclass`` 665``debian``
427================== 666==========
428 667
429The ``debian`` class renames output packages so that they follow the 668The :ref:`ref-classes-debian` class renames output packages so that they follow the
430Debian naming policy (i.e. ``glibc`` becomes ``libc6`` and 669Debian naming policy (i.e. ``glibc`` becomes ``libc6`` and
431``glibc-devel`` becomes ``libc6-dev``.) Renaming includes the library 670``glibc-devel`` becomes ``libc6-dev``.) Renaming includes the library
432name and version as part of the package name. 671name and version as part of the package name.
@@ -438,10 +677,10 @@ naming scheme.
438 677
439.. _ref-classes-deploy: 678.. _ref-classes-deploy:
440 679
441``deploy.bbclass`` 680``deploy``
442================== 681==========
443 682
444The ``deploy`` class handles deploying files to the 683The :ref:`ref-classes-deploy` class handles deploying files to the
445:term:`DEPLOY_DIR_IMAGE` directory. The main 684:term:`DEPLOY_DIR_IMAGE` directory. The main
446function of this class is to allow the deploy step to be accelerated by 685function of this class is to allow the deploy step to be accelerated by
447shared state. Recipes that inherit this class should define their own 686shared state. Recipes that inherit this class should define their own
@@ -450,113 +689,109 @@ deployed to :term:`DEPLOYDIR`, and use ``addtask`` to
450add the task at the appropriate place, which is usually after 689add the task at the appropriate place, which is usually after
451:ref:`ref-tasks-compile` or 690:ref:`ref-tasks-compile` or
452:ref:`ref-tasks-install`. The class then takes care of 691:ref:`ref-tasks-install`. The class then takes care of
453staging the files from ``DEPLOYDIR`` to ``DEPLOY_DIR_IMAGE``. 692staging the files from :term:`DEPLOYDIR` to :term:`DEPLOY_DIR_IMAGE`.
693
694.. _ref-classes-devicetree:
695
696``devicetree``
697==============
698
699The :ref:`ref-classes-devicetree` class allows to build a recipe that compiles
700device tree source files that are not in the kernel tree.
701
702The compilation of out-of-tree device tree sources is the same as the kernel
703in-tree device tree compilation process. This includes the ability to include
704sources from the kernel such as SoC ``dtsi`` files as well as C header files,
705such as ``gpio.h``.
706
707The :ref:`ref-tasks-compile` task will compile two kinds of files:
708
709- Regular device tree sources with a ``.dts`` extension.
710
711- Device tree overlays, detected from the presence of the ``/plugin/;``
712 string in the file contents.
713
714This class deploys the generated device tree binaries into
715``${``\ :term:`DEPLOY_DIR_IMAGE`\ ``}/devicetree/``. This is similar to
716what the :ref:`ref-classes-kernel-devicetree` class does, with the added
717``devicetree`` subdirectory to avoid name clashes. Additionally, the device
718trees are populated into the sysroot for access via the sysroot from within
719other recipes.
720
721By default, all device tree sources located in :term:`DT_FILES_PATH` directory
722are compiled. To select only particular sources, set :term:`DT_FILES` to
723a space-separated list of files (relative to :term:`DT_FILES_PATH`). For
724convenience, both ``.dts`` and ``.dtb`` extensions can be used.
725
726An extra padding is appended to non-overlay device trees binaries. This
727can typically be used as extra space for adding extra properties at boot time.
728The padding size can be modified by setting :term:`DT_PADDING_SIZE`
729to the desired size, in bytes.
730
731See :oe_git:`devicetree.bbclass sources
732</openembedded-core/tree/meta/classes-recipe/devicetree.bbclass>`
733for further variables controlling this class.
734
735Here is an excerpt of an example ``recipes-kernel/linux/devicetree-acme.bb``
736recipe inheriting this class::
737
738 inherit devicetree
739 COMPATIBLE_MACHINE = "^mymachine$"
740 SRC_URI:mymachine = "file://mymachine.dts"
454 741
455.. _ref-classes-devshell: 742.. _ref-classes-devshell:
456 743
457``devshell.bbclass`` 744``devshell``
458==================== 745============
459 746
460The ``devshell`` class adds the ``do_devshell`` task. Distribution 747The :ref:`ref-classes-devshell` class adds the :ref:`ref-tasks-devshell` task. Distribution
461policy dictates whether to include this class. See the ":ref:`dev-manual/common-tasks:using a development shell`" 748policy dictates whether to include this class. See the ":ref:`dev-manual/development-shell:using a development shell`"
462section in the Yocto Project Development Tasks Manual for more 749section in the Yocto Project Development Tasks Manual for more
463information about using ``devshell``. 750information about using :ref:`ref-classes-devshell`.
464 751
465.. _ref-classes-devupstream: 752.. _ref-classes-devupstream:
466 753
467``devupstream.bbclass`` 754``devupstream``
468======================= 755===============
469 756
470The ``devupstream`` class uses 757The :ref:`ref-classes-devupstream` class uses
471:term:`BBCLASSEXTEND` to add a variant of the 758:term:`BBCLASSEXTEND` to add a variant of the
472recipe that fetches from an alternative URI (e.g. Git) instead of a 759recipe that fetches from an alternative URI (e.g. Git) instead of a
473tarball. Following is an example: 760tarball. Here is an example::
474::
475 761
476 BBCLASSEXTEND = "devupstream:target" 762 BBCLASSEXTEND = "devupstream:target"
477 SRC_URI_class-devupstream = "git://git.example.com/example" 763 SRC_URI:class-devupstream = "git://git.example.com/example;branch=main"
478 SRCREV_class-devupstream = "abcd1234" 764 SRCREV:class-devupstream = "abcd1234"
479 765
480Adding the above statements to your recipe creates a variant that has 766Adding the above statements to your recipe creates a variant that has
481:term:`DEFAULT_PREFERENCE` set to "-1". 767:term:`DEFAULT_PREFERENCE` set to "-1".
482Consequently, you need to select the variant of the recipe to use it. 768Consequently, you need to select the variant of the recipe to use it.
483Any development-specific adjustments can be done by using the 769Any development-specific adjustments can be done by using the
484``class-devupstream`` override. Here is an example: 770``class-devupstream`` override. Here is an example::
485::
486 771
487 DEPENDS_append_class-devupstream = " gperf-native" 772 DEPENDS:append:class-devupstream = " gperf-native"
488 do_configure_prepend_class-devupstream() { 773 do_configure:prepend:class-devupstream() {
489 touch ${S}/README 774 touch ${S}/README
490 } 775 }
491 776
492The class 777The class
493currently only supports creating a development variant of the target 778currently only supports creating a development variant of the target
494recipe, not ``native`` or ``nativesdk`` variants. 779recipe, not :ref:`ref-classes-native` or :ref:`ref-classes-nativesdk` variants.
495 780
496The ``BBCLASSEXTEND`` syntax (i.e. ``devupstream:target``) provides 781The :term:`BBCLASSEXTEND` syntax (i.e. ``devupstream:target``) provides
497support for ``native`` and ``nativesdk`` variants. Consequently, this 782support for :ref:`ref-classes-native` and :ref:`ref-classes-nativesdk` variants. Consequently, this
498functionality can be added in a future release. 783functionality can be added in a future release.
499 784
500Support for other version control systems such as Subversion is limited 785Support for other version control systems such as Subversion is limited
501due to BitBake's automatic fetch dependencies (e.g. 786due to BitBake's automatic fetch dependencies (e.g.
502``subversion-native``). 787``subversion-native``).
503 788
504.. _ref-classes-distutils:
505
506``distutils*.bbclass``
507======================
508
509The ``distutils*`` classes support recipes for Python version 2.x
510extensions, which are simple. These recipes usually only need to point
511to the source's archive and then inherit the proper class. Building is
512split into two methods depending on which method the module authors
513used.
514
515- Extensions that use an Autotools-based build system require Autotools
516 and the classes based on ``distutils`` in their recipes.
517
518- Extensions that use build systems based on ``distutils`` require the
519 ``distutils`` class in their recipes.
520
521- Extensions that use build systems based on ``setuptools`` require the
522 :ref:`setuptools <ref-classes-setuptools>` class in their recipes.
523
524The ``distutils-common-base`` class is required by some of the
525``distutils*`` classes to provide common Python2 support.
526
527.. _ref-classes-distutils3:
528
529``distutils3*.bbclass``
530=======================
531
532The ``distutils3*`` classes support recipes for Python version 3.x
533extensions, which are simple. These recipes usually only need to point
534to the source's archive and then inherit the proper class. Building is
535split into three methods depending on which method the module authors
536used.
537
538- Extensions that use an Autotools-based build system require Autotools
539 and ``distutils``-based classes in their recipes.
540
541- Extensions that use ``distutils``-based build systems require the
542 ``distutils`` class in their recipes.
543
544- Extensions that use build systems based on ``setuptools3`` require
545 the :ref:`setuptools3 <ref-classes-setuptools>` class in their
546 recipes.
547
548The ``distutils3*`` classes either inherit their corresponding
549``distutils*`` class or replicate them using a Python3 version instead
550(e.g. ``distutils3-base`` inherits ``distutils-common-base``, which is
551the same as ``distutils-base`` but inherits ``python3native`` instead of
552``pythonnative``).
553
554.. _ref-classes-externalsrc: 789.. _ref-classes-externalsrc:
555 790
556``externalsrc.bbclass`` 791``externalsrc``
557======================= 792===============
558 793
559The ``externalsrc`` class supports building software from source code 794The :ref:`ref-classes-externalsrc` class supports building software from source code
560that is external to the OpenEmbedded build system. Building software 795that is external to the OpenEmbedded build system. Building software
561from an external source tree means that the build system's normal fetch, 796from an external source tree means that the build system's normal fetch,
562unpack, and patch process is not used. 797unpack, and patch process is not used.
@@ -564,37 +799,34 @@ unpack, and patch process is not used.
564By default, the OpenEmbedded build system uses the :term:`S` 799By default, the OpenEmbedded build system uses the :term:`S`
565and :term:`B` variables to locate unpacked recipe source code 800and :term:`B` variables to locate unpacked recipe source code
566and to build it, respectively. When your recipe inherits the 801and to build it, respectively. When your recipe inherits the
567``externalsrc`` class, you use the 802:ref:`ref-classes-externalsrc` class, you use the
568:term:`EXTERNALSRC` and 803:term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD` variables to
569:term:`EXTERNALSRC_BUILD` variables to 804ultimately define :term:`S` and :term:`B`.
570ultimately define ``S`` and ``B``.
571 805
572By default, this class expects the source code to support recipe builds 806By default, this class expects the source code to support recipe builds
573that use the :term:`B` variable to point to the directory in 807that use the :term:`B` variable to point to the directory in
574which the OpenEmbedded build system places the generated objects built 808which the OpenEmbedded build system places the generated objects built
575from the recipes. By default, the ``B`` directory is set to the 809from the recipes. By default, the :term:`B` directory is set to the
576following, which is separate from the source directory (``S``): 810following, which is separate from the source directory (:term:`S`)::
577::
578 811
579 ${WORKDIR}/${BPN}/{PV}/ 812 ${WORKDIR}/${BPN}-{PV}/
580 813
581See these variables for more information: 814See these variables for more information:
582:term:`WORKDIR`, :term:`BPN`, and 815:term:`WORKDIR`, :term:`BPN`, and
583:term:`PV`, 816:term:`PV`,
584 817
585For more information on the ``externalsrc`` class, see the comments in 818For more information on the :ref:`ref-classes-externalsrc` class, see the comments in
586``meta/classes/externalsrc.bbclass`` in the :term:`Source Directory`. 819``meta/classes/externalsrc.bbclass`` in the :term:`Source Directory`.
587For information on how to use the 820For information on how to use the :ref:`ref-classes-externalsrc` class, see the
588``externalsrc`` class, see the 821":ref:`dev-manual/building:building software from an external source`"
589":ref:`dev-manual/common-tasks:building software from an external source`"
590section in the Yocto Project Development Tasks Manual. 822section in the Yocto Project Development Tasks Manual.
591 823
592.. _ref-classes-extrausers: 824.. _ref-classes-extrausers:
593 825
594``extrausers.bbclass`` 826``extrausers``
595====================== 827==============
596 828
597The ``extrausers`` class allows additional user and group configuration 829The :ref:`ref-classes-extrausers` class allows additional user and group configuration
598to be applied at the image level. Inheriting this class either globally 830to be applied at the image level. Inheriting this class either globally
599or from an image recipe allows additional user and group operations to 831or from an image recipe allows additional user and group operations to
600be performed using the 832be performed using the
@@ -602,16 +834,13 @@ be performed using the
602 834
603.. note:: 835.. note::
604 836
605 The user and group operations added using the 837 The user and group operations added using the :ref:`ref-classes-extrausers`
606 extrausers
607 class are not tied to a specific recipe outside of the recipe for the 838 class are not tied to a specific recipe outside of the recipe for the
608 image. Thus, the operations can be performed across the image as a 839 image. Thus, the operations can be performed across the image as a
609 whole. Use the 840 whole. Use the :ref:`ref-classes-useradd` class to add user and group
610 useradd 841 configuration to a specific recipe.
611 class to add user and group configuration to a specific recipe.
612 842
613Here is an example that uses this class in an image recipe: 843Here is an example that uses this class in an image recipe::
614::
615 844
616 inherit extrausers 845 inherit extrausers
617 EXTRA_USERS_PARAMS = "\ 846 EXTRA_USERS_PARAMS = "\
@@ -624,31 +853,42 @@ Here is an example that uses this class in an image recipe:
624 " 853 "
625 854
626Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns 855Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns
627passwords: 856passwords. First on host, create the (escaped) password hash::
628:: 857
858 printf "%q" $(mkpasswd -m sha256crypt tester01)
859
860The resulting hash is set to a variable and used in ``useradd`` command parameters::
629 861
630 inherit extrausers 862 inherit extrausers
863 PASSWD = "\$X\$ABC123\$A-Long-Hash"
631 EXTRA_USERS_PARAMS = "\ 864 EXTRA_USERS_PARAMS = "\
632 useradd -P tester01 tester-jim; \ 865 useradd -p '${PASSWD}' tester-jim; \
633 useradd -P tester01 tester-sue; \ 866 useradd -p '${PASSWD}' tester-sue; \
634 " 867 "
635 868
636Finally, here is an example that sets the root password to "1876*18": 869Finally, here is an example that sets the root password::
637::
638 870
639 inherit extrausers 871 inherit extrausers
640 EXTRA_USERS_PARAMS = "\ 872 EXTRA_USERS_PARAMS = "\
641 usermod -P 1876*18 root; \ 873 usermod -p '${PASSWD}' root; \
642 " 874 "
643 875
876.. note::
877
878 From a security perspective, hardcoding a default password is not
879 generally a good idea or even legal in some jurisdictions. It is
880 recommended that you do not do this if you are building a production
881 image.
882
883
644.. _ref-classes-features_check: 884.. _ref-classes-features_check:
645 885
646``features_check.bbclass`` 886``features_check``
647================================= 887==================
648 888
649The ``features_check`` class allows individual recipes to check 889The :ref:`ref-classes-features_check` class allows individual recipes to check
650for required and conflicting 890for required and conflicting :term:`DISTRO_FEATURES`, :term:`MACHINE_FEATURES`
651:term:`DISTRO_FEATURES`, :term:`MACHINE_FEATURES` or :term:`COMBINED_FEATURES`. 891or :term:`COMBINED_FEATURES`.
652 892
653This class provides support for the following variables: 893This class provides support for the following variables:
654 894
@@ -669,10 +909,10 @@ triggered.
669 909
670.. _ref-classes-fontcache: 910.. _ref-classes-fontcache:
671 911
672``fontcache.bbclass`` 912``fontcache``
673===================== 913=============
674 914
675The ``fontcache`` class generates the proper post-install and 915The :ref:`ref-classes-fontcache` class generates the proper post-install and
676post-remove (postinst and postrm) scriptlets for font packages. These 916post-remove (postinst and postrm) scriptlets for font packages. These
677scriptlets call ``fc-cache`` (part of ``Fontconfig``) to add the fonts 917scriptlets call ``fc-cache`` (part of ``Fontconfig``) to add the fonts
678to the font information cache. Since the cache files are 918to the font information cache. Since the cache files are
@@ -685,20 +925,20 @@ packages containing the fonts.
685 925
686.. _ref-classes-fs-uuid: 926.. _ref-classes-fs-uuid:
687 927
688``fs-uuid.bbclass`` 928``fs-uuid``
689=================== 929===========
690 930
691The ``fs-uuid`` class extracts UUID from 931The :ref:`ref-classes-fs-uuid` class extracts UUID from
692``${``\ :term:`ROOTFS`\ ``}``, which must have been built 932``${``\ :term:`ROOTFS`\ ``}``, which must have been built
693by the time that this function gets called. The ``fs-uuid`` class only 933by the time that this function gets called. The :ref:`ref-classes-fs-uuid` class only
694works on ``ext`` file systems and depends on ``tune2fs``. 934works on ``ext`` file systems and depends on ``tune2fs``.
695 935
696.. _ref-classes-gconf: 936.. _ref-classes-gconf:
697 937
698``gconf.bbclass`` 938``gconf``
699================= 939=========
700 940
701The ``gconf`` class provides common functionality for recipes that need 941The :ref:`ref-classes-gconf` class provides common functionality for recipes that need
702to install GConf schemas. The schemas will be put into a separate 942to install GConf schemas. The schemas will be put into a separate
703package (``${``\ :term:`PN`\ ``}-gconf``) that is created 943package (``${``\ :term:`PN`\ ``}-gconf``) that is created
704automatically when this class is inherited. This package uses the 944automatically when this class is inherited. This package uses the
@@ -707,29 +947,95 @@ register and unregister the schemas in the target image.
707 947
708.. _ref-classes-gettext: 948.. _ref-classes-gettext:
709 949
710``gettext.bbclass`` 950``gettext``
711=================== 951===========
712 952
713The ``gettext`` class provides support for building software that uses 953The :ref:`ref-classes-gettext` class provides support for building
714the GNU ``gettext`` internationalization and localization system. All 954software that uses the GNU ``gettext`` internationalization and localization
715recipes building software that use ``gettext`` should inherit this 955system. All recipes building software that use ``gettext`` should inherit this
716class. 956class.
717 957
958.. _ref-classes-github-releases:
959
960``github-releases``
961===================
962
963For recipes that fetch release tarballs from github, the :ref:`ref-classes-github-releases`
964class sets up a standard way for checking available upstream versions
965(to support ``devtool upgrade`` and the Automated Upgrade Helper (AUH)).
966
967To use it, add ":ref:`ref-classes-github-releases`" to the inherit line in the recipe,
968and if the default value of :term:`GITHUB_BASE_URI` is not suitable,
969then set your own value in the recipe. You should then use ``${GITHUB_BASE_URI}``
970in the value you set for :term:`SRC_URI` within the recipe.
971
718.. _ref-classes-gnomebase: 972.. _ref-classes-gnomebase:
719 973
720``gnomebase.bbclass`` 974``gnomebase``
721===================== 975=============
722 976
723The ``gnomebase`` class is the base class for recipes that build 977The :ref:`ref-classes-gnomebase` class is the base class for recipes that build
724software from the GNOME stack. This class sets 978software from the GNOME stack. This class sets
725:term:`SRC_URI` to download the source from the GNOME 979:term:`SRC_URI` to download the source from the GNOME
726mirrors as well as extending :term:`FILES` with the typical 980mirrors as well as extending :term:`FILES` with the typical
727GNOME installation paths. 981GNOME installation paths.
728 982
983.. _ref-classes-go:
984
985``go``
986======
987
988The :ref:`ref-classes-go` class supports building Go programs. The behavior of
989this class is controlled by the mandatory :term:`GO_IMPORT` variable, and
990by the optional :term:`GO_INSTALL` and :term:`GO_INSTALL_FILTEROUT` ones.
991
992To build a Go program with the Yocto Project, you can use the
993:yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>`
994recipe as an example.
995
996.. _ref-classes-go-mod:
997
998``go-mod``
999==========
1000
1001The :ref:`ref-classes-go-mod` class allows to use Go modules, and inherits the
1002:ref:`ref-classes-go` class.
1003
1004See the associated :term:`GO_WORKDIR` variable.
1005
1006.. _ref-classes-go-mod-update-modules:
1007
1008``go-mod-update-modules``
1009=========================
1010
1011The :ref:`ref-classes-go-mod-update-modules` class can be used in Go recipes and
1012defines a ``do_update_modules`` task that can be run manually to update two
1013files ("BPN" below corresponds to :term:`BPN`):
1014
1015- ``BPN-go-mods.inc``: list of Go modules the recipe depends on.
1016- ``BPN-licenses.inc``: list of licenses for each Go modules the recipe depends
1017 on.
1018
1019These files can then updated automatically with the ``do_update_modules`` task.
1020
1021.. _ref-classes-go-vendor:
1022
1023``go-vendor``
1024=============
1025
1026The :ref:`ref-classes-go-vendor` class implements support for offline builds,
1027also known as Go vendoring. In such a scenario, the module dependencias are
1028downloaded during the :ref:`ref-tasks-fetch` task rather than when modules are
1029imported, thus being coherent with Yocto's concept of fetching every source
1030beforehand.
1031
1032The dependencies are unpacked into the modules' ``vendor`` directory, where a
1033manifest file is generated.
1034
729.. _ref-classes-gobject-introspection: 1035.. _ref-classes-gobject-introspection:
730 1036
731``gobject-introspection.bbclass`` 1037``gobject-introspection``
732================================= 1038=========================
733 1039
734Provides support for recipes building software that supports GObject 1040Provides support for recipes building software that supports GObject
735introspection. This functionality is only enabled if the 1041introspection. This functionality is only enabled if the
@@ -740,22 +1046,24 @@ introspection. This functionality is only enabled if the
740 1046
741.. note:: 1047.. note::
742 1048
743 This functionality is backfilled by default and, if not applicable, 1049 This functionality is :ref:`backfilled <ref-features-backfill>` by default
744 should be disabled through ``DISTRO_FEATURES_BACKFILL_CONSIDERED`` or 1050 and, if not applicable, should be disabled through
745 ``MACHINE_FEATURES_BACKFILL_CONSIDERED``, respectively. 1051 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` or
1052 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`, respectively.
746 1053
747.. _ref-classes-grub-efi: 1054.. _ref-classes-grub-efi:
748 1055
749``grub-efi.bbclass`` 1056``grub-efi``
750==================== 1057============
751 1058
752The ``grub-efi`` class provides ``grub-efi``-specific functions for 1059The :ref:`ref-classes-grub-efi` class provides ``grub-efi``-specific functions for
753building bootable images. 1060building bootable images.
754 1061
755This class supports several variables: 1062This class supports several variables:
756 1063
757- :term:`INITRD`: Indicates list of filesystem images to 1064- :term:`INITRD`: Indicates list of filesystem images to
758 concatenate and use as an initial RAM disk (initrd) (optional). 1065 concatenate and use as an initial RAM disk (initrd) (optional).
1066 Can be specified for each ``LABEL``.
759 1067
760- :term:`ROOTFS`: Indicates a filesystem image to include 1068- :term:`ROOTFS`: Indicates a filesystem image to include
761 as the root filesystem (optional). 1069 as the root filesystem (optional).
@@ -769,6 +1077,9 @@ This class supports several variables:
769- :term:`APPEND`: An override list of append strings for 1077- :term:`APPEND`: An override list of append strings for
770 each ``LABEL``. 1078 each ``LABEL``.
771 1079
1080- :term:`GRUB_TITLE`: A custom title for each ``LABEL``. If a label does not
1081 have a custom title, the label is used as title for the GRUB menu entry.
1082
772- :term:`GRUB_OPTS`: Additional options to add to the 1083- :term:`GRUB_OPTS`: Additional options to add to the
773 configuration (optional). Options are delimited using semi-colon 1084 configuration (optional). Options are delimited using semi-colon
774 characters (``;``). 1085 characters (``;``).
@@ -776,12 +1087,24 @@ This class supports several variables:
776- :term:`GRUB_TIMEOUT`: Timeout before executing 1087- :term:`GRUB_TIMEOUT`: Timeout before executing
777 the default ``LABEL`` (optional). 1088 the default ``LABEL`` (optional).
778 1089
1090Each ``LABEL`` defined in the :term:`LABELS` variable creates a GRUB boot
1091entry, and some variables can be defined individually per ``LABEL``. The label
1092specific override names are defined as ``grub_LABEL``.
1093
1094For example, for a label ``factory``, the override name would be
1095``grub_factory``. A custom GRUB menu entry titled "Factory Install" with the
1096additional parameter ``factory=yes`` can be achieved as follows::
1097
1098 LABELS:append = " factory"
1099 APPEND:grub_factory = "factory=yes"
1100 GRUB_TITLE:grub_factory = "Factory Install"
1101
779.. _ref-classes-gsettings: 1102.. _ref-classes-gsettings:
780 1103
781``gsettings.bbclass`` 1104``gsettings``
782===================== 1105=============
783 1106
784The ``gsettings`` class provides common functionality for recipes that 1107The :ref:`ref-classes-gsettings` class provides common functionality for recipes that
785need to install GSettings (glib) schemas. The schemas are assumed to be 1108need to install GSettings (glib) schemas. The schemas are assumed to be
786part of the main package. Appropriate post-install and post-remove 1109part of the main package. Appropriate post-install and post-remove
787(postinst/postrm) scriptlets are added to register and unregister the 1110(postinst/postrm) scriptlets are added to register and unregister the
@@ -789,18 +1112,18 @@ schemas in the target image.
789 1112
790.. _ref-classes-gtk-doc: 1113.. _ref-classes-gtk-doc:
791 1114
792``gtk-doc.bbclass`` 1115``gtk-doc``
793=================== 1116===========
794 1117
795The ``gtk-doc`` class is a helper class to pull in the appropriate 1118The :ref:`ref-classes-gtk-doc` class is a helper class to pull in the appropriate
796``gtk-doc`` dependencies and disable ``gtk-doc``. 1119``gtk-doc`` dependencies and disable ``gtk-doc``.
797 1120
798.. _ref-classes-gtk-icon-cache: 1121.. _ref-classes-gtk-icon-cache:
799 1122
800``gtk-icon-cache.bbclass`` 1123``gtk-icon-cache``
801========================== 1124==================
802 1125
803The ``gtk-icon-cache`` class generates the proper post-install and 1126The :ref:`ref-classes-gtk-icon-cache` class generates the proper post-install and
804post-remove (postinst/postrm) scriptlets for packages that use GTK+ and 1127post-remove (postinst/postrm) scriptlets for packages that use GTK+ and
805install icons. These scriptlets call ``gtk-update-icon-cache`` to add 1128install icons. These scriptlets call ``gtk-update-icon-cache`` to add
806the fonts to GTK+'s icon cache. Since the cache files are 1129the fonts to GTK+'s icon cache. Since the cache files are
@@ -810,10 +1133,10 @@ creation.
810 1133
811.. _ref-classes-gtk-immodules-cache: 1134.. _ref-classes-gtk-immodules-cache:
812 1135
813``gtk-immodules-cache.bbclass`` 1136``gtk-immodules-cache``
814=============================== 1137=======================
815 1138
816The ``gtk-immodules-cache`` class generates the proper post-install and 1139The :ref:`ref-classes-gtk-immodules-cache` class generates the proper post-install and
817post-remove (postinst/postrm) scriptlets for packages that install GTK+ 1140post-remove (postinst/postrm) scriptlets for packages that install GTK+
818input method modules for virtual keyboards. These scriptlets call 1141input method modules for virtual keyboards. These scriptlets call
819``gtk-update-icon-cache`` to add the input method modules to the cache. 1142``gtk-update-icon-cache`` to add the input method modules to the cache.
@@ -828,106 +1151,31 @@ the packages containing the modules.
828 1151
829.. _ref-classes-gzipnative: 1152.. _ref-classes-gzipnative:
830 1153
831``gzipnative.bbclass`` 1154``gzipnative``
832====================== 1155==============
833 1156
834The ``gzipnative`` class enables the use of different native versions of 1157The :ref:`ref-classes-gzipnative` class enables the use of different native versions of
835``gzip`` and ``pigz`` rather than the versions of these tools from the 1158``gzip`` and ``pigz`` rather than the versions of these tools from the
836build host. 1159build host.
837 1160
838.. _ref-classes-icecc:
839
840``icecc.bbclass``
841=================
842
843The ``icecc`` class supports
844`Icecream <https://github.com/icecc/icecream>`__, which facilitates
845taking compile jobs and distributing them among remote machines.
846
847The class stages directories with symlinks from ``gcc`` and ``g++`` to
848``icecc``, for both native and cross compilers. Depending on each
849configure or compile, the OpenEmbedded build system adds the directories
850at the head of the ``PATH`` list and then sets the ``ICECC_CXX`` and
851``ICEC_CC`` variables, which are the paths to the ``g++`` and ``gcc``
852compilers, respectively.
853
854For the cross compiler, the class creates a ``tar.gz`` file that
855contains the Yocto Project toolchain and sets ``ICECC_VERSION``, which
856is the version of the cross-compiler used in the cross-development
857toolchain, accordingly.
858
859The class handles all three different compile stages (i.e native
860,cross-kernel and target) and creates the necessary environment
861``tar.gz`` file to be used by the remote machines. The class also
862supports SDK generation.
863
864If :term:`ICECC_PATH` is not set in your
865``local.conf`` file, then the class tries to locate the ``icecc`` binary
866using ``which``. If :term:`ICECC_ENV_EXEC` is set
867in your ``local.conf`` file, the variable should point to the
868``icecc-create-env`` script provided by the user. If you do not point to
869a user-provided script, the build system uses the default script
870provided by the recipe ``icecc-create-env-native.bb``.
871
872.. note::
873
874 This script is a modified version and not the one that comes with
875 icecc.
876
877If you do not want the Icecream distributed compile support to apply to
878specific recipes or classes, you can effectively "blacklist" them by
879listing the recipes and classes using the
880:term:`ICECC_USER_PACKAGE_BL` and
881:term:`ICECC_USER_CLASS_BL`, variables,
882respectively, in your ``local.conf`` file. Doing so causes the
883OpenEmbedded build system to handle these compilations locally.
884
885Additionally, you can list recipes using the
886:term:`ICECC_USER_PACKAGE_WL` variable in
887your ``local.conf`` file to force ``icecc`` to be enabled for recipes
888using an empty :term:`PARALLEL_MAKE` variable.
889
890Inheriting the ``icecc`` class changes all sstate signatures.
891Consequently, if a development team has a dedicated build system that
892populates :term:`SSTATE_MIRRORS` and they want to
893reuse sstate from ``SSTATE_MIRRORS``, then all developers and the build
894system need to either inherit the ``icecc`` class or nobody should.
895
896At the distribution level, you can inherit the ``icecc`` class to be
897sure that all builders start with the same sstate signatures. After
898inheriting the class, you can then disable the feature by setting the
899:term:`ICECC_DISABLED` variable to "1" as follows:
900::
901
902 INHERIT_DISTRO_append = " icecc"
903 ICECC_DISABLED ??= "1"
904
905This practice
906makes sure everyone is using the same signatures but also requires
907individuals that do want to use Icecream to enable the feature
908individually as follows in your ``local.conf`` file:
909::
910
911 ICECC_DISABLED = ""
912
913.. _ref-classes-image: 1161.. _ref-classes-image:
914 1162
915``image.bbclass`` 1163``image``
916================= 1164=========
917 1165
918The ``image`` class helps support creating images in different formats. 1166The :ref:`ref-classes-image` class helps support creating images in different formats.
919First, the root filesystem is created from packages using one of the 1167First, the root filesystem is created from packages using one of the
920``rootfs*.bbclass`` files (depending on the package format used) and 1168``rootfs*.bbclass`` files (depending on the package format used) and
921then one or more image files are created. 1169then one or more image files are created.
922 1170
923- The ``IMAGE_FSTYPES`` variable controls the types of images to 1171- The :term:`IMAGE_FSTYPES` variable controls the types of images to
924 generate. 1172 generate.
925 1173
926- The ``IMAGE_INSTALL`` variable controls the list of packages to 1174- The :term:`IMAGE_INSTALL` variable controls the list of packages to
927 install into the image. 1175 install into the image.
928 1176
929For information on customizing images, see the 1177For information on customizing images, see the
930":ref:`dev-manual/common-tasks:customizing images`" section 1178":ref:`dev-manual/customizing-images:customizing images`" section
931in the Yocto Project Development Tasks Manual. For information on how 1179in the Yocto Project Development Tasks Manual. For information on how
932images are created, see the 1180images are created, see the
933":ref:`overview-manual/concepts:images`" section in the 1181":ref:`overview-manual/concepts:images`" section in the
@@ -935,49 +1183,66 @@ Yocto Project Overview and Concepts Manual.
935 1183
936.. _ref-classes-image-buildinfo: 1184.. _ref-classes-image-buildinfo:
937 1185
938``image-buildinfo.bbclass`` 1186``image-buildinfo``
939=========================== 1187===================
1188
1189The :ref:`ref-classes-image-buildinfo` class writes a plain text file containing
1190build information to the target filesystem at ``${sysconfdir}/buildinfo``
1191by default (as specified by :term:`IMAGE_BUILDINFO_FILE`).
1192This can be useful for manually determining the origin of any given
1193image. It writes out two sections:
940 1194
941The ``image-buildinfo`` class writes information to the target 1195#. `Build Configuration`: a list of variables and their values (specified
942filesystem on ``/etc/build``. 1196 by :term:`IMAGE_BUILDINFO_VARS`, which defaults to :term:`DISTRO` and
1197 :term:`DISTRO_VERSION`)
1198
1199#. `Layer Revisions`: the revisions of all of the layers used in the
1200 build.
1201
1202Additionally, when building an SDK it will write the same contents
1203to ``/buildinfo`` by default (as specified by
1204:term:`SDK_BUILDINFO_FILE`).
943 1205
944.. _ref-classes-image_types: 1206.. _ref-classes-image_types:
945 1207
946``image_types.bbclass`` 1208``image_types``
947======================= 1209===============
948 1210
949The ``image_types`` class defines all of the standard image output types 1211The :ref:`ref-classes-image_types` class defines all of the standard image output types
950that you can enable through the 1212that you can enable through the
951:term:`IMAGE_FSTYPES` variable. You can use this 1213:term:`IMAGE_FSTYPES` variable. You can use this
952class as a reference on how to add support for custom image output 1214class as a reference on how to add support for custom image output
953types. 1215types.
954 1216
955By default, the :ref:`image <ref-classes-image>` class automatically 1217By default, the :ref:`ref-classes-image` class automatically
956enables the ``image_types`` class. The ``image`` class uses the 1218enables the :ref:`ref-classes-image_types` class. The :ref:`ref-classes-image` class uses the
957``IMGCLASSES`` variable as follows: 1219``IMGCLASSES`` variable as follows::
958::
959 1220
960 IMGCLASSES = "rootfs_${IMAGE_PKGTYPE} image_types ${IMAGE_CLASSES}" 1221 IMGCLASSES = "rootfs_${IMAGE_PKGTYPE} image_types ${IMAGE_CLASSES}"
961 IMGCLASSES += "${@['populate_sdk_base', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}" 1222 # Only Linux SDKs support populate_sdk_ext, fall back to populate_sdk_base
1223 # in the non-Linux SDK_OS case, such as mingw32
1224 inherit populate_sdk_base
1225 IMGCLASSES += "${@['', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}"
962 IMGCLASSES += "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live iso hddimg', 'image-live', '', d)}" 1226 IMGCLASSES += "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live iso hddimg', 'image-live', '', d)}"
963 IMGCLASSES += "${@bb.utils.contains('IMAGE_FSTYPES', 'container', 'image-container', '', d)}" 1227 IMGCLASSES += "${@bb.utils.contains('IMAGE_FSTYPES', 'container', 'image-container', '', d)}"
964 IMGCLASSES += "image_types_wic" 1228 IMGCLASSES += "image_types_wic"
965 IMGCLASSES += "rootfs-postcommands" 1229 IMGCLASSES += "rootfs-postcommands"
966 IMGCLASSES += "image-postinst-intercepts" 1230 IMGCLASSES += "image-postinst-intercepts"
967 inherit ${IMGCLASSES} 1231 IMGCLASSES += "overlayfs-etc"
1232 inherit_defer ${IMGCLASSES}
968 1233
969The ``image_types`` class also handles conversion and compression of images. 1234The :ref:`ref-classes-image_types` class also handles conversion and compression of images.
970 1235
971.. note:: 1236.. note::
972 1237
973 To build a VMware VMDK image, you need to add "wic.vmdk" to 1238 To build a VMware VMDK image, you need to add "wic.vmdk" to
974 ``IMAGE_FSTYPES``. This would also be similar for Virtual Box Virtual Disk 1239 :term:`IMAGE_FSTYPES`. This would also be similar for Virtual Box Virtual Disk
975 Image ("vdi") and QEMU Copy On Write Version 2 ("qcow2") images. 1240 Image ("vdi") and QEMU Copy On Write Version 2 ("qcow2") images.
976 1241
977.. _ref-classes-image-live: 1242.. _ref-classes-image-live:
978 1243
979``image-live.bbclass`` 1244``image-live``
980====================== 1245==============
981 1246
982This class controls building "live" (i.e. HDDIMG and ISO) images. Live 1247This class controls building "live" (i.e. HDDIMG and ISO) images. Live
983images contain syslinux for legacy booting, as well as the bootloader 1248images contain syslinux for legacy booting, as well as the bootloader
@@ -987,43 +1252,12 @@ specified by :term:`EFI_PROVIDER` if
987Normally, you do not use this class directly. Instead, you add "live" to 1252Normally, you do not use this class directly. Instead, you add "live" to
988:term:`IMAGE_FSTYPES`. 1253:term:`IMAGE_FSTYPES`.
989 1254
990.. _ref-classes-image-mklibs:
991
992``image-mklibs.bbclass``
993========================
994
995The ``image-mklibs`` class enables the use of the ``mklibs`` utility
996during the :ref:`ref-tasks-rootfs` task, which optimizes
997the size of libraries contained in the image.
998
999By default, the class is enabled in the ``local.conf.template`` using
1000the :term:`USER_CLASSES` variable as follows:
1001::
1002
1003 USER_CLASSES ?= "buildstats image-mklibs image-prelink"
1004
1005.. _ref-classes-image-prelink:
1006
1007``image-prelink.bbclass``
1008=========================
1009
1010The ``image-prelink`` class enables the use of the ``prelink`` utility
1011during the :ref:`ref-tasks-rootfs` task, which optimizes
1012the dynamic linking of shared libraries to reduce executable startup
1013time.
1014
1015By default, the class is enabled in the ``local.conf.template`` using
1016the :term:`USER_CLASSES` variable as follows:
1017::
1018
1019 USER_CLASSES ?= "buildstats image-mklibs image-prelink"
1020
1021.. _ref-classes-insane: 1255.. _ref-classes-insane:
1022 1256
1023``insane.bbclass`` 1257``insane``
1024================== 1258==========
1025 1259
1026The ``insane`` class adds a step to the package generation process so 1260The :ref:`ref-classes-insane` class adds a step to the package generation process so
1027that output quality assurance checks are generated by the OpenEmbedded 1261that output quality assurance checks are generated by the OpenEmbedded
1028build system. A range of checks are performed that check the build's 1262build system. A range of checks are performed that check the build's
1029output for common problems that show up during runtime. Distribution 1263output for common problems that show up during runtime. Distribution
@@ -1043,456 +1277,281 @@ configuration). However, to skip one or more checks in recipes, you
1043should use :term:`INSANE_SKIP`. For example, to skip 1277should use :term:`INSANE_SKIP`. For example, to skip
1044the check for symbolic link ``.so`` files in the main package of a 1278the check for symbolic link ``.so`` files in the main package of a
1045recipe, add the following to the recipe. You need to realize that the 1279recipe, add the following to the recipe. You need to realize that the
1046package name override, in this example ``${PN}``, must be used: 1280package name override, in this example ``${PN}``, must be used::
1047::
1048 1281
1049 INSANE_SKIP_${PN} += "dev-so" 1282 INSANE_SKIP:${PN} += "dev-so"
1050 1283
1051Please keep in mind that the QA checks 1284Please keep in mind that the QA checks
1052exist in order to detect real or potential problems in the packaged 1285are meant to detect real or potential problems in the packaged
1053output. So exercise caution when disabling these checks. 1286output. So exercise caution when disabling these checks.
1054 1287
1055The following list shows the tests you can list with the ``WARN_QA`` and 1288The tests you can list with the :term:`WARN_QA` and
1056``ERROR_QA`` variables: 1289:term:`ERROR_QA` variables are documented in the :doc:`/ref-manual/qa-checks`
1057 1290document of the Yocto Project Reference Manual.
1058- ``already-stripped:`` Checks that produced binaries have not
1059 already been stripped prior to the build system extracting debug
1060 symbols. It is common for upstream software projects to default to
1061 stripping debug symbols for output binaries. In order for debugging
1062 to work on the target using ``-dbg`` packages, this stripping must be
1063 disabled.
1064
1065- ``arch:`` Checks the Executable and Linkable Format (ELF) type, bit
1066 size, and endianness of any binaries to ensure they match the target
1067 architecture. This test fails if any binaries do not match the type
1068 since there would be an incompatibility. The test could indicate that
1069 the wrong compiler or compiler options have been used. Sometimes
1070 software, like bootloaders, might need to bypass this check.
1071
1072- ``buildpaths:`` Checks for paths to locations on the build host
1073 inside the output files. Currently, this test triggers too many false
1074 positives and thus is not normally enabled.
1075
1076- ``build-deps:`` Determines if a build-time dependency that is
1077 specified through :term:`DEPENDS`, explicit
1078 :term:`RDEPENDS`, or task-level dependencies exists
1079 to match any runtime dependency. This determination is particularly
1080 useful to discover where runtime dependencies are detected and added
1081 during packaging. If no explicit dependency has been specified within
1082 the metadata, at the packaging stage it is too late to ensure that
1083 the dependency is built, and thus you can end up with an error when
1084 the package is installed into the image during the
1085 :ref:`ref-tasks-rootfs` task because the auto-detected
1086 dependency was not satisfied. An example of this would be where the
1087 :ref:`update-rc.d <ref-classes-update-rc.d>` class automatically
1088 adds a dependency on the ``initscripts-functions`` package to
1089 packages that install an initscript that refers to
1090 ``/etc/init.d/functions``. The recipe should really have an explicit
1091 ``RDEPENDS`` for the package in question on ``initscripts-functions``
1092 so that the OpenEmbedded build system is able to ensure that the
1093 ``initscripts`` recipe is actually built and thus the
1094 ``initscripts-functions`` package is made available.
1095
1096- ``compile-host-path:`` Checks the
1097 :ref:`ref-tasks-compile` log for indications that
1098 paths to locations on the build host were used. Using such paths
1099 might result in host contamination of the build output.
1100
1101- ``debug-deps:`` Checks that all packages except ``-dbg`` packages
1102 do not depend on ``-dbg`` packages, which would cause a packaging
1103 bug.
1104
1105- ``debug-files:`` Checks for ``.debug`` directories in anything but
1106 the ``-dbg`` package. The debug files should all be in the ``-dbg``
1107 package. Thus, anything packaged elsewhere is incorrect packaging.
1108
1109- ``dep-cmp:`` Checks for invalid version comparison statements in
1110 runtime dependency relationships between packages (i.e. in
1111 :term:`RDEPENDS`,
1112 :term:`RRECOMMENDS`,
1113 :term:`RSUGGESTS`,
1114 :term:`RPROVIDES`,
1115 :term:`RREPLACES`, and
1116 :term:`RCONFLICTS` variable values). Any invalid
1117 comparisons might trigger failures or undesirable behavior when
1118 passed to the package manager.
1119
1120- ``desktop:`` Runs the ``desktop-file-validate`` program against any
1121 ``.desktop`` files to validate their contents against the
1122 specification for ``.desktop`` files.
1123
1124- ``dev-deps:`` Checks that all packages except ``-dev`` or
1125 ``-staticdev`` packages do not depend on ``-dev`` packages, which
1126 would be a packaging bug.
1127
1128- ``dev-so:`` Checks that the ``.so`` symbolic links are in the
1129 ``-dev`` package and not in any of the other packages. In general,
1130 these symlinks are only useful for development purposes. Thus, the
1131 ``-dev`` package is the correct location for them. Some very rare
1132 cases do exist for dynamically loaded modules where these symlinks
1133 are needed instead in the main package.
1134
1135- ``file-rdeps:`` Checks that file-level dependencies identified by
1136 the OpenEmbedded build system at packaging time are satisfied. For
1137 example, a shell script might start with the line ``#!/bin/bash``.
1138 This line would translate to a file dependency on ``/bin/bash``. Of
1139 the three package managers that the OpenEmbedded build system
1140 supports, only RPM directly handles file-level dependencies,
1141 resolving them automatically to packages providing the files.
1142 However, the lack of that functionality in the other two package
1143 managers does not mean the dependencies do not still need resolving.
1144 This QA check attempts to ensure that explicitly declared
1145 :term:`RDEPENDS` exist to handle any file-level
1146 dependency detected in packaged files.
1147
1148- ``files-invalid:`` Checks for :term:`FILES` variable
1149 values that contain "//", which is invalid.
1150
1151- ``host-user-contaminated:`` Checks that no package produced by the
1152 recipe contains any files outside of ``/home`` with a user or group
1153 ID that matches the user running BitBake. A match usually indicates
1154 that the files are being installed with an incorrect UID/GID, since
1155 target IDs are independent from host IDs. For additional information,
1156 see the section describing the
1157 :ref:`ref-tasks-install` task.
1158
1159- ``incompatible-license:`` Report when packages are excluded from
1160 being created due to being marked with a license that is in
1161 :term:`INCOMPATIBLE_LICENSE`.
1162
1163- ``install-host-path:`` Checks the
1164 :ref:`ref-tasks-install` log for indications that
1165 paths to locations on the build host were used. Using such paths
1166 might result in host contamination of the build output.
1167
1168- ``installed-vs-shipped:`` Reports when files have been installed
1169 within ``do_install`` but have not been included in any package by
1170 way of the :term:`FILES` variable. Files that do not
1171 appear in any package cannot be present in an image later on in the
1172 build process. Ideally, all installed files should be packaged or not
1173 installed at all. These files can be deleted at the end of
1174 ``do_install`` if the files are not needed in any package.
1175
1176- ``invalid-chars:`` Checks that the recipe metadata variables
1177 :term:`DESCRIPTION`,
1178 :term:`SUMMARY`, :term:`LICENSE`, and
1179 :term:`SECTION` do not contain non-UTF-8 characters.
1180 Some package managers do not support such characters.
1181
1182- ``invalid-packageconfig:`` Checks that no undefined features are
1183 being added to :term:`PACKAGECONFIG`. For
1184 example, any name "foo" for which the following form does not exist:
1185 ::
1186
1187 PACKAGECONFIG[foo] = "..."
1188
1189- ``la:`` Checks ``.la`` files for any ``TMPDIR`` paths. Any ``.la``
1190 file containing these paths is incorrect since ``libtool`` adds the
1191 correct sysroot prefix when using the files automatically itself.
1192
1193- ``ldflags:`` Ensures that the binaries were linked with the
1194 :term:`LDFLAGS` options provided by the build system.
1195 If this test fails, check that the ``LDFLAGS`` variable is being
1196 passed to the linker command.
1197
1198- ``libdir:`` Checks for libraries being installed into incorrect
1199 (possibly hardcoded) installation paths. For example, this test will
1200 catch recipes that install ``/lib/bar.so`` when ``${base_libdir}`` is
1201 "lib32". Another example is when recipes install
1202 ``/usr/lib64/foo.so`` when ``${libdir}`` is "/usr/lib".
1203
1204- ``libexec:`` Checks if a package contains files in
1205 ``/usr/libexec``. This check is not performed if the ``libexecdir``
1206 variable has been set explicitly to ``/usr/libexec``.
1207
1208- ``packages-list:`` Checks for the same package being listed
1209 multiple times through the :term:`PACKAGES` variable
1210 value. Installing the package in this manner can cause errors during
1211 packaging.
1212
1213- ``perm-config:`` Reports lines in ``fs-perms.txt`` that have an
1214 invalid format.
1215
1216- ``perm-line:`` Reports lines in ``fs-perms.txt`` that have an
1217 invalid format.
1218
1219- ``perm-link:`` Reports lines in ``fs-perms.txt`` that specify
1220 'link' where the specified target already exists.
1221
1222- ``perms:`` Currently, this check is unused but reserved.
1223
1224- ``pkgconfig:`` Checks ``.pc`` files for any
1225 :term:`TMPDIR`/:term:`WORKDIR` paths.
1226 Any ``.pc`` file containing these paths is incorrect since
1227 ``pkg-config`` itself adds the correct sysroot prefix when the files
1228 are accessed.
1229
1230- ``pkgname:`` Checks that all packages in
1231 :term:`PACKAGES` have names that do not contain
1232 invalid characters (i.e. characters other than 0-9, a-z, ., +, and
1233 -).
1234
1235- ``pkgv-undefined:`` Checks to see if the ``PKGV`` variable is
1236 undefined during :ref:`ref-tasks-package`.
1237
1238- ``pkgvarcheck:`` Checks through the variables
1239 :term:`RDEPENDS`,
1240 :term:`RRECOMMENDS`,
1241 :term:`RSUGGESTS`,
1242 :term:`RCONFLICTS`,
1243 :term:`RPROVIDES`,
1244 :term:`RREPLACES`, :term:`FILES`,
1245 :term:`ALLOW_EMPTY`, ``pkg_preinst``,
1246 ``pkg_postinst``, ``pkg_prerm`` and ``pkg_postrm``, and reports if
1247 there are variable sets that are not package-specific. Using these
1248 variables without a package suffix is bad practice, and might
1249 unnecessarily complicate dependencies of other packages within the
1250 same recipe or have other unintended consequences.
1251
1252- ``pn-overrides:`` Checks that a recipe does not have a name
1253 (:term:`PN`) value that appears in
1254 :term:`OVERRIDES`. If a recipe is named such that
1255 its ``PN`` value matches something already in ``OVERRIDES`` (e.g.
1256 ``PN`` happens to be the same as :term:`MACHINE` or
1257 :term:`DISTRO`), it can have unexpected consequences.
1258 For example, assignments such as ``FILES_${PN} = "xyz"`` effectively
1259 turn into ``FILES = "xyz"``.
1260
1261- ``rpaths:`` Checks for rpaths in the binaries that contain build
1262 system paths such as ``TMPDIR``. If this test fails, bad ``-rpath``
1263 options are being passed to the linker commands and your binaries
1264 have potential security issues.
1265
1266- ``split-strip:`` Reports that splitting or stripping debug symbols
1267 from binaries has failed.
1268
1269- ``staticdev:`` Checks for static library files (``*.a``) in
1270 non-``staticdev`` packages.
1271
1272- ``symlink-to-sysroot:`` Checks for symlinks in packages that point
1273 into :term:`TMPDIR` on the host. Such symlinks will
1274 work on the host, but are clearly invalid when running on the target.
1275
1276- ``textrel:`` Checks for ELF binaries that contain relocations in
1277 their ``.text`` sections, which can result in a performance impact at
1278 runtime. See the explanation for the ``ELF binary`` message in
1279 ":doc:`/ref-manual/qa-checks`" for more information regarding runtime performance
1280 issues.
1281
1282- ``unlisted-pkg-lics:`` Checks that all declared licenses applying
1283 for a package are also declared on the recipe level (i.e. any license
1284 in ``LICENSE_*`` should appear in :term:`LICENSE`).
1285
1286- ``useless-rpaths:`` Checks for dynamic library load paths (rpaths)
1287 in the binaries that by default on a standard system are searched by
1288 the linker (e.g. ``/lib`` and ``/usr/lib``). While these paths will
1289 not cause any breakage, they do waste space and are unnecessary.
1290
1291- ``var-undefined:`` Reports when variables fundamental to packaging
1292 (i.e. :term:`WORKDIR`,
1293 :term:`DEPLOY_DIR`, :term:`D`,
1294 :term:`PN`, and :term:`PKGD`) are undefined
1295 during :ref:`ref-tasks-package`.
1296
1297- ``version-going-backwards:`` If Build History is enabled, reports
1298 when a package being written out has a lower version than the
1299 previously written package under the same name. If you are placing
1300 output packages into a feed and upgrading packages on a target system
1301 using that feed, the version of a package going backwards can result
1302 in the target system not correctly upgrading to the "new" version of
1303 the package.
1304
1305 .. note::
1306
1307 If you are not using runtime package management on your target
1308 system, then you do not need to worry about this situation.
1309
1310- ``xorg-driver-abi:`` Checks that all packages containing Xorg
1311 drivers have ABI dependencies. The ``xserver-xorg`` recipe provides
1312 driver ABI names. All drivers should depend on the ABI versions that
1313 they have been built against. Driver recipes that include
1314 ``xorg-driver-input.inc`` or ``xorg-driver-video.inc`` will
1315 automatically get these versions. Consequently, you should only need
1316 to explicitly add dependencies to binary driver recipes.
1317
1318.. _ref-classes-insserv:
1319
1320``insserv.bbclass``
1321===================
1322
1323The ``insserv`` class uses the ``insserv`` utility to update the order
1324of symbolic links in ``/etc/rc?.d/`` within an image based on
1325dependencies specified by LSB headers in the ``init.d`` scripts
1326themselves.
1327 1291
1328.. _ref-classes-kernel: 1292.. _ref-classes-kernel:
1329 1293
1330``kernel.bbclass`` 1294``kernel``
1331================== 1295==========
1332 1296
1333The ``kernel`` class handles building Linux kernels. The class contains 1297The :ref:`ref-classes-kernel` class handles building Linux kernels. The class contains
1334code to build all kernel trees. All needed headers are staged into the 1298code to build all kernel trees. All needed headers are staged into the
1335``STAGING_KERNEL_DIR`` directory to allow out-of-tree module builds 1299:term:`STAGING_KERNEL_DIR` directory to allow out-of-tree module builds
1336using the :ref:`module <ref-classes-module>` class. 1300using the :ref:`ref-classes-module` class.
1337 1301
1338This means that each built kernel module is packaged separately and 1302If a file named ``defconfig`` is listed in :term:`SRC_URI`, then by default
1339inter-module dependencies are created by parsing the ``modinfo`` output. 1303:ref:`ref-tasks-configure` copies it as ``.config`` in the build directory,
1340If all modules are required, then installing the ``kernel-modules`` 1304so it is automatically used as the kernel configuration for the build. This
1341package installs all packages with modules and various other kernel 1305copy is not performed in case ``.config`` already exists there: this allows
1342packages such as ``kernel-vmlinux``. 1306recipes to produce a configuration by other means in
1343 1307``do_configure:prepend``.
1344The ``kernel`` class contains logic that allows you to embed an initial 1308
1345RAM filesystem (initramfs) image when you build the kernel image. For 1309Each built kernel module is packaged separately and inter-module
1346information on how to build an initramfs, see the 1310dependencies are created by parsing the ``modinfo`` output. If all modules
1347":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section in 1311are required, then installing the ``kernel-modules`` package installs all
1312packages with modules and various other kernel packages such as
1313``kernel-vmlinux``.
1314
1315The :ref:`ref-classes-kernel` class contains logic that allows you to embed an initial
1316RAM filesystem (:term:`Initramfs`) image when you build the kernel image. For
1317information on how to build an :term:`Initramfs`, see the
1318":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section in
1348the Yocto Project Development Tasks Manual. 1319the Yocto Project Development Tasks Manual.
1349 1320
1350Various other classes are used by the ``kernel`` and ``module`` classes 1321Various other classes are used by the :ref:`ref-classes-kernel` and :ref:`ref-classes-module` classes
1351internally including the :ref:`kernel-arch <ref-classes-kernel-arch>`, 1322internally including the :ref:`ref-classes-kernel-arch`, :ref:`ref-classes-module-base`, and
1352:ref:`module-base <ref-classes-module-base>`, and 1323:ref:`ref-classes-linux-kernel-base` classes.
1353:ref:`linux-kernel-base <ref-classes-linux-kernel-base>` classes.
1354 1324
1355.. _ref-classes-kernel-arch: 1325.. _ref-classes-kernel-arch:
1356 1326
1357``kernel-arch.bbclass`` 1327``kernel-arch``
1358======================= 1328===============
1359 1329
1360The ``kernel-arch`` class sets the ``ARCH`` environment variable for 1330The :ref:`ref-classes-kernel-arch` class sets the ``ARCH`` environment variable for
1361Linux kernel compilation (including modules). 1331Linux kernel compilation (including modules).
1362 1332
1363.. _ref-classes-kernel-devicetree: 1333.. _ref-classes-kernel-devicetree:
1364 1334
1365``kernel-devicetree.bbclass`` 1335``kernel-devicetree``
1366============================= 1336=====================
1367 1337
1368The ``kernel-devicetree`` class, which is inherited by the 1338The :ref:`ref-classes-kernel-devicetree` class, which is inherited by the
1369:ref:`kernel <ref-classes-kernel>` class, supports device tree 1339:ref:`ref-classes-kernel` class, supports device tree generation.
1370generation.
1371 1340
1372.. _ref-classes-kernel-fitimage: 1341Its behavior is mainly controlled by the following variables:
1373 1342
1374``kernel-fitimage.bbclass`` 1343- :term:`KERNEL_DEVICETREE_BUNDLE`: whether to bundle the kernel and device tree
1375=========================== 1344- :term:`KERNEL_DTBDEST`: directory where to install DTB files
1345- :term:`KERNEL_DTBVENDORED`: whether to keep vendor subdirectories
1346- :term:`KERNEL_DTC_FLAGS`: flags for ``dtc``, the Device Tree Compiler
1347- :term:`KERNEL_PACKAGE_NAME`: base name of the kernel packages
1376 1348
1377The ``kernel-fitimage`` class provides support to pack a kernel image, 1349.. _ref-classes-kernel-fit-image:
1378device trees, a U-boot script, a Initramfs bundle and a RAM disk
1379into a single FIT image. In theory, a FIT image can support any number
1380of kernels, U-boot scripts, Initramfs bundles, RAM disks and device-trees.
1381However, ``kernel-fitimage`` currently only supports
1382limited usescases: just one kernel image, an optional U-boot script,
1383an optional Initramfs bundle, an optional RAM disk, and any number of
1384device tree.
1385
1386To create a FIT image, it is required that :term:`KERNEL_CLASSES`
1387is set to include "kernel-fitimage" and :term:`KERNEL_IMAGETYPE`
1388is set to "fitImage".
1389
1390The options for the device tree compiler passed to ``mkimage -D``
1391when creating the FIT image are specified using the
1392:term:`UBOOT_MKIMAGE_DTCOPTS` variable.
1393
1394Only a single kernel can be added to the FIT image created by
1395``kernel-fitimage`` and the kernel image in FIT is mandatory. The
1396address where the kernel image is to be loaded by U-Boot is
1397specified by :term:`UBOOT_LOADADDRESS` and the entrypoint by
1398:term:`UBOOT_ENTRYPOINT`.
1399
1400Multiple device trees can be added to the FIT image created by
1401``kernel-fitimage`` and the device tree is optional.
1402The address where the device tree is to be loaded by U-Boot is
1403specified by :term:`UBOOT_DTBO_LOADADDRESS` for device tree overlays
1404and by :term:`UBOOT_DTB_LOADADDRESS` for device tree binaries.
1405
1406Only a single RAM disk can be added to the FIT image created by
1407``kernel-fitimage`` and the RAM disk in FIT is optional.
1408The address where the RAM disk image is to be loaded by U-Boot
1409is specified by :term:`UBOOT_RD_LOADADDRESS` and the entrypoint by
1410:term:`UBOOT_RD_ENTRYPOINT`. The ramdisk is added to FIT image when
1411:term:`INITRAMFS_IMAGE` is specified and that :term:`INITRAMFS_IMAGE_BUNDLE`
1412is set to 0.
1413
1414Only a single Initramfs bundle can be added to the FIT image created by
1415``kernel-fitimage`` and the Initramfs bundle in FIT is optional.
1416In case of Initramfs, the kernel is configured to be bundled with the rootfs
1417in the same binary (example: zImage-initramfs-:term:`MACHINE`.bin).
1418When the kernel is copied to RAM and executed, it unpacks the Initramfs rootfs.
1419The Initramfs bundle can be enabled when :term:`INITRAMFS_IMAGE`
1420is specified and that :term:`INITRAMFS_IMAGE_BUNDLE` is set to 1.
1421The address where the Initramfs bundle is to be loaded by U-boot is specified
1422by :term:`UBOOT_LOADADDRESS` and the entrypoint by :term:`UBOOT_ENTRYPOINT`.
1423
1424Only a single U-boot boot script can be added to the FIT image created by
1425``kernel-fitimage`` and the boot script is optional.
1426The boot script is specified in the ITS file as a text file containing
1427U-boot commands. When using a boot script the user should configure the
1428U-boot ``do_install`` task to copy the script to sysroot.
1429So the script can be included in the the FIT image by the ``kernel-fitimage``
1430class. At run-time, U-boot CONFIG_BOOTCOMMAND define can be configured to
1431load the boot script from the FIT image and executes it.
1432
1433The FIT image generated by ``kernel-fitimage`` class is signed when the
1434variables :term:`UBOOT_SIGN_ENABLE`, :term:`UBOOT_MKIMAGE_DTCOPTS`,
1435:term:`UBOOT_SIGN_KEYDIR` and :term:`UBOOT_SIGN_KEYNAME` are set
1436appropriately. The default values used for :term:`FIT_HASH_ALG` and
1437:term:`FIT_SIGN_ALG` in ``kernel-fitimage`` are "sha256" and
1438"rsa2048" respectively. The keys for signing fitImage can be generated using
1439the ``kernel-fitimage`` class when both :term:`FIT_GENERATE_KEYS` and
1440:term:`UBOOT_SIGN_ENABLE` are set to "1".
1441 1350
1351``kernel-fit-image``
1352====================
1353
1354The :ref:`ref-classes-kernel-fit-image` class provides support to pack a kernel image,
1355device trees, a U-boot script, and an :term:`Initramfs` into a single FIT image.
1356In theory, a FIT image can support any number of kernels, U-boot scripts,
1357:term:`Initramfs`, and device trees.
1358However, :ref:`ref-classes-kernel-fit-image` currently only supports
1359limited usecases: just one kernel image, an optional U-boot script,
1360an optional :term:`Initramfs`, and any number of device trees.
1361
1362The FIT image is created by a recipe which inherits the
1363:ref:`ref-classes-kernel-fit-image` class.
1364One such example is the ``linux-yocto-fitimage`` recipe which creates a FIT
1365image for the Linux Yocto kernel.
1366Additionally, it is required that :term:`KERNEL_CLASSES` is set to include
1367:ref:`ref-classes-kernel-fit-extra-artifacts`.
1368The :ref:`ref-classes-kernel-fit-extra-artifacts` class exposes the required kernel
1369artifacts to the :term:`DEPLOY_DIR_IMAGE` which are used by the
1370:ref:`ref-classes-kernel-fit-image` class to create the FIT image.
1371
1372The simplest example for building a FIT image is to add::
1373
1374 KERNEL_CLASSES += "kernel-fit-extra-artifacts"
1375
1376to the machine :term:`configuration file` and to execute::
1377
1378 bitbake linux-yocto-fitimage
1379
1380This results in a ``fitImage`` file deployed to the :term:`DEPLOY_DIR_IMAGE`
1381directory and a ``linux-yocto-fitimage`` package which can be installed.
1382
1383The same approach works for all variants of the ``linux-yocto`` kernel.
1384For example, if the ``linux-yocto-rt`` kernel should be used, add the following
1385lines to the machine configuration file::
1386
1387 KERNEL_CLASSES += "kernel-fit-extra-artifacts"
1388 PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt"
1389
1390The FIT image, this time including the RT kernel, is built again by calling::
1391
1392 bitbake linux-yocto-fitimage
1393
1394For other kernels provided by other layers, the same approach would work.
1395However, it is usually more intuitive to add a custom FIT image recipe next to
1396the custom kernel recipe.
1397For example, if a layer provides a ``linux-vanilla`` recipe, a
1398``linux-vanilla-fitimage`` recipe may be added as well.
1399The ``linux-vanilla-fitimage`` recipe can be created as a customized copy of
1400the ``linux-yocto-fitimage`` recipe.
1401
1402Usually the kernel is built as a dependency of an image.
1403If the FIT image should be used as a replacement for the kernel image which
1404is installed in the root filesystem, then the following variables can be set
1405e.g. in the machine configuration file::
1406
1407 # Create and deploy the vmlinux artifact which gets included into the FIT image
1408 KERNEL_CLASSES += "kernel-fit-extra-artifacts"
1409
1410 # Do not install the kernel image package
1411 RRECOMMENDS:${KERNEL_PACKAGE_NAME}-base = ""
1412 # Install the FIT image package
1413 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "linux-yocto-fitimage"
1414
1415 # Configure the image.bbclass to depend on the FIT image instead of only
1416 # the kernel to ensure the FIT image is built and deployed with the image
1417 KERNEL_DEPLOY_DEPEND = "linux-yocto-fitimage:do_deploy"
1418
1419The :ref:`ref-classes-kernel-fit-image` class processes several variables that
1420allow configuration:
1421
1422- The options for the device tree compiler passed to ``mkimage -D``
1423 when creating the FIT image are specified using the
1424 :term:`UBOOT_MKIMAGE_DTCOPTS` variable.
1425
1426- Only a single kernel can be added to the FIT image created by
1427 :ref:`ref-classes-kernel-fit-image` and it is a mandatory component of the
1428 FIT image.
1429 The address where the kernel image is to be loaded by U-Boot is
1430 specified by :term:`UBOOT_LOADADDRESS` and the entrypoint by
1431 :term:`UBOOT_ENTRYPOINT`. Setting :term:`FIT_ADDRESS_CELLS` to "2"
1432 is necessary if such addresses are 64 bit ones.
1433
1434- Multiple device trees can be added to the FIT image created by
1435 :ref:`ref-classes-kernel-fit-image` and the device tree is optional.
1436 The address where the device tree is to be loaded by U-Boot is
1437 specified by :term:`UBOOT_DTBO_LOADADDRESS` for device tree overlays
1438 and by :term:`UBOOT_DTB_LOADADDRESS` for device tree binaries.
1439
1440- Only a single :term:`Initramfs` can be added to the FIT image created by
1441 :ref:`ref-classes-kernel-fit-image`. The :term:`Initramfs` in FIT is optional.
1442 The address where the RAM disk image is to be loaded by U-Boot
1443 is specified by :term:`UBOOT_RD_LOADADDRESS` and the entrypoint by
1444 :term:`UBOOT_RD_ENTRYPOINT`. The :term:`Initramfs` is added to the FIT image
1445 when :term:`INITRAMFS_IMAGE` is specified.
1446
1447- It's recommended to add the :term:`Initramfs` and the kernel image as
1448 independent image nodes to the FIT image.
1449 Bundling a RAM disk image with the kernel image and including the bundle
1450 (:term:`INITRAMFS_IMAGE_BUNDLE` set to "1") in the FIT image is possible.
1451 However, this approach has the disadvantage that any change to the RAM
1452 disk image necessitates rebuilding the kernel image.
1453 This process requires the full kernel build directory, which is kind of
1454 incompatible with the :term:`SSTATE_DIR` and, consequently, with SDKs.
1455
1456- Only a single U-Boot boot script can be added to the FIT image created by
1457 :ref:`ref-classes-kernel-fit-image`. The boot script is optional.
1458 The boot script is specified in the ITS file as a text file containing
1459 U-Boot commands. When using a boot script the recipe which inherits the
1460 :ref:`ref-classes-kernel-fit-image` class should add the script to
1461 :term:`SRC_URI` and set the :term:`FIT_UBOOT_ENV` variable to the name of the
1462 file like the following::
1463
1464 FIT_UBOOT_ENV = "boot.txt"
1465 SRC_URI += "file://${FIT_UBOOT_ENV}"
1466
1467 At run-time, U-boot's boot command can be configured to load the boot script
1468 from the FIT image and source it.
1469
1470- The FIT image generated by the :ref:`ref-classes-kernel-fit-image` class is signed when the
1471 variables :term:`UBOOT_SIGN_ENABLE`, :term:`UBOOT_MKIMAGE_DTCOPTS`,
1472 :term:`UBOOT_SIGN_KEYDIR` and :term:`UBOOT_SIGN_KEYNAME` are set
1473 appropriately. The default values used for :term:`FIT_HASH_ALG` and
1474 :term:`FIT_SIGN_ALG` in :ref:`ref-classes-kernel-fit-image` are "sha256" and
1475 "rsa2048" respectively. The keys for signing the FIT image can be generated using
1476 the :ref:`ref-classes-kernel-fit-image` class when both :term:`FIT_GENERATE_KEYS` and
1477 :term:`UBOOT_SIGN_ENABLE` are set to "1".
1478
1479.. _ref-classes-kernel-fit-extra-artifacts:
1480
1481``kernel-fit-extra-artifacts``
1482==============================
1483
1484The :ref:`ref-classes-kernel-fit-extra-artifacts` class exposes the required
1485kernel artifacts to the :term:`DEPLOY_DIR_IMAGE` directory.
1486These artifacts are used by the :ref:`ref-classes-kernel-fit-image` class to
1487create a FIT image that can include the kernel, device trees, an optional
1488U-Boot script, and an optional Initramfs.
1489
1490This class is typically included by adding it to the :term:`KERNEL_CLASSES`
1491variable in your kernel recipe or machine configuration when building FIT images.
1492It ensures that all necessary files are available for packaging into the FIT image,
1493such as the kernel binary, device tree blobs (DTBs), and other related files.
1494
1495For example, to enable this class, set::
1496
1497 KERNEL_CLASSES += "kernel-fit-extra-artifacts"
1498
1499This is required when using the :ref:`ref-classes-kernel-fit-image` class to
1500generate FIT images for your kernel.
1442 1501
1443.. _ref-classes-kernel-grub: 1502.. _ref-classes-kernel-grub:
1444 1503
1445``kernel-grub.bbclass`` 1504``kernel-grub``
1446======================= 1505===============
1447 1506
1448The ``kernel-grub`` class updates the boot area and the boot menu with 1507The :ref:`ref-classes-kernel-grub` class updates the boot area and the boot menu with
1449the kernel as the priority boot mechanism while installing a RPM to 1508the kernel as the priority boot mechanism while installing a RPM to
1450update the kernel on a deployed target. 1509update the kernel on a deployed target.
1451 1510
1452.. _ref-classes-kernel-module-split: 1511.. _ref-classes-kernel-module-split:
1453 1512
1454``kernel-module-split.bbclass`` 1513``kernel-module-split``
1455=============================== 1514=======================
1456 1515
1457The ``kernel-module-split`` class provides common functionality for 1516The :ref:`ref-classes-kernel-module-split` class provides common functionality for
1458splitting Linux kernel modules into separate packages. 1517splitting Linux kernel modules into separate packages.
1459 1518
1460.. _ref-classes-kernel-uboot: 1519.. _ref-classes-kernel-uboot:
1461 1520
1462``kernel-uboot.bbclass`` 1521``kernel-uboot``
1463======================== 1522================
1464 1523
1465The ``kernel-uboot`` class provides support for building from 1524The :ref:`ref-classes-kernel-uboot` class provides support for building from
1466vmlinux-style kernel sources. 1525vmlinux-style kernel sources.
1467 1526
1468.. _ref-classes-kernel-uimage: 1527.. _ref-classes-kernel-uimage:
1469 1528
1470``kernel-uimage.bbclass`` 1529``kernel-uimage``
1471========================= 1530=================
1472 1531
1473The ``kernel-uimage`` class provides support to pack uImage. 1532The :ref:`ref-classes-kernel-uimage` class provides support to pack uImage.
1474 1533
1475.. _ref-classes-kernel-yocto: 1534.. _ref-classes-kernel-yocto:
1476 1535
1477``kernel-yocto.bbclass`` 1536``kernel-yocto``
1478======================== 1537================
1479 1538
1480The ``kernel-yocto`` class provides common functionality for building 1539The :ref:`ref-classes-kernel-yocto` class provides common functionality for building
1481from linux-yocto style kernel source repositories. 1540from linux-yocto style kernel source repositories.
1482 1541
1483.. _ref-classes-kernelsrc: 1542.. _ref-classes-kernelsrc:
1484 1543
1485``kernelsrc.bbclass`` 1544``kernelsrc``
1486===================== 1545=============
1487 1546
1488The ``kernelsrc`` class sets the Linux kernel source and version. 1547The :ref:`ref-classes-kernelsrc` class sets the Linux kernel source and version.
1489 1548
1490.. _ref-classes-lib_package: 1549.. _ref-classes-lib_package:
1491 1550
1492``lib_package.bbclass`` 1551``lib_package``
1493======================= 1552===============
1494 1553
1495The ``lib_package`` class supports recipes that build libraries and 1554The :ref:`ref-classes-lib_package` class supports recipes that build libraries and
1496produce executable binaries, where those binaries should not be 1555produce executable binaries, where those binaries should not be
1497installed by default along with the library. Instead, the binaries are 1556installed by default along with the library. Instead, the binaries are
1498added to a separate ``${``\ :term:`PN`\ ``}-bin`` package to 1557added to a separate ``${``\ :term:`PN`\ ``}-bin`` package to
@@ -1500,40 +1559,40 @@ make their installation optional.
1500 1559
1501.. _ref-classes-libc*: 1560.. _ref-classes-libc*:
1502 1561
1503``libc*.bbclass`` 1562``libc*``
1504================= 1563=========
1505 1564
1506The ``libc*`` classes support recipes that build packages with ``libc``: 1565The :ref:`ref-classes-libc*` classes support recipes that build packages with ``libc``:
1507 1566
1508- The ``libc-common`` class provides common support for building with 1567- The :ref:`libc-common <ref-classes-libc*>` class provides common support for building with
1509 ``libc``. 1568 ``libc``.
1510 1569
1511- The ``libc-package`` class supports packaging up ``glibc`` and 1570- The :ref:`libc-package <ref-classes-libc*>` class supports packaging up ``glibc`` and
1512 ``eglibc``. 1571 ``eglibc``.
1513 1572
1514.. _ref-classes-license: 1573.. _ref-classes-license:
1515 1574
1516``license.bbclass`` 1575``license``
1517=================== 1576===========
1518 1577
1519The ``license`` class provides license manifest creation and license 1578The :ref:`ref-classes-license` class provides license manifest creation and license
1520exclusion. This class is enabled by default using the default value for 1579exclusion. This class is enabled by default using the default value for
1521the :term:`INHERIT_DISTRO` variable. 1580the :term:`INHERIT_DISTRO` variable.
1522 1581
1523.. _ref-classes-linux-kernel-base: 1582.. _ref-classes-linux-kernel-base:
1524 1583
1525``linux-kernel-base.bbclass`` 1584``linux-kernel-base``
1526============================= 1585=====================
1527 1586
1528The ``linux-kernel-base`` class provides common functionality for 1587The :ref:`ref-classes-linux-kernel-base` class provides common functionality for
1529recipes that build out of the Linux kernel source tree. These builds 1588recipes that build out of the Linux kernel source tree. These builds
1530goes beyond the kernel itself. For example, the Perf recipe also 1589goes beyond the kernel itself. For example, the Perf recipe also
1531inherits this class. 1590inherits this class.
1532 1591
1533.. _ref-classes-linuxloader: 1592.. _ref-classes-linuxloader:
1534 1593
1535``linuxloader.bbclass`` 1594``linuxloader``
1536======================= 1595===============
1537 1596
1538Provides the function ``linuxloader()``, which gives the value of the 1597Provides the function ``linuxloader()``, which gives the value of the
1539dynamic loader/linker provided on the platform. This value is used by a 1598dynamic loader/linker provided on the platform. This value is used by a
@@ -1541,80 +1600,93 @@ number of other classes.
1541 1600
1542.. _ref-classes-logging: 1601.. _ref-classes-logging:
1543 1602
1544``logging.bbclass`` 1603``logging``
1545=================== 1604===========
1546 1605
1547The ``logging`` class provides the standard shell functions used to log 1606The :ref:`ref-classes-logging` class provides the standard shell functions used to log
1548messages for various BitBake severity levels (i.e. ``bbplain``, 1607messages for various BitBake severity levels (i.e. ``bbplain``,
1549``bbnote``, ``bbwarn``, ``bberror``, ``bbfatal``, and ``bbdebug``). 1608``bbnote``, ``bbwarn``, ``bberror``, ``bbfatal``, and ``bbdebug``).
1550 1609
1551This class is enabled by default since it is inherited by the ``base`` 1610This class is enabled by default since it is inherited by the :ref:`ref-classes-base`
1552class. 1611class.
1553 1612
1554.. _ref-classes-meta: 1613.. _ref-classes-meson:
1555 1614
1556``meta.bbclass`` 1615``meson``
1557================ 1616=========
1558 1617
1559The ``meta`` class is inherited by recipes that do not build any output 1618The :ref:`ref-classes-meson` class allows to create recipes that build software
1560packages themselves, but act as a "meta" target for building other 1619using the `Meson <https://mesonbuild.com/>`__ build system. You can use the
1561recipes. 1620:term:`MESON_BUILDTYPE`, :term:`MESON_TARGET` and :term:`EXTRA_OEMESON`
1621variables to specify additional configuration options to be passed using the
1622``meson`` command line.
1562 1623
1563.. _ref-classes-metadata_scm: 1624.. _ref-classes-metadata_scm:
1564 1625
1565``metadata_scm.bbclass`` 1626``metadata_scm``
1566======================== 1627================
1567 1628
1568The ``metadata_scm`` class provides functionality for querying the 1629The :ref:`ref-classes-metadata_scm` class provides functionality for querying the
1569branch and revision of a Source Code Manager (SCM) repository. 1630branch and revision of a Source Code Manager (SCM) repository.
1570 1631
1571The :ref:`base <ref-classes-base>` class uses this class to print the 1632The :ref:`ref-classes-base` class uses this class to print the revisions of
1572revisions of each layer before starting every build. The 1633each layer before starting every build. The :ref:`ref-classes-metadata_scm`
1573``metadata_scm`` class is enabled by default because it is inherited by 1634class is enabled by default because it is inherited by the
1574the ``base`` class. 1635:ref:`ref-classes-base` class.
1575
1576.. _ref-classes-migrate_localcount:
1577
1578``migrate_localcount.bbclass``
1579==============================
1580
1581The ``migrate_localcount`` class verifies a recipe's localcount data and
1582increments it appropriately.
1583 1636
1584.. _ref-classes-mime: 1637.. _ref-classes-mime:
1585 1638
1586``mime.bbclass`` 1639``mime``
1587================ 1640========
1588 1641
1589The ``mime`` class generates the proper post-install and post-remove 1642The :ref:`ref-classes-mime` class generates the proper post-install and post-remove
1590(postinst/postrm) scriptlets for packages that install MIME type files. 1643(postinst/postrm) scriptlets for packages that install MIME type files.
1591These scriptlets call ``update-mime-database`` to add the MIME types to 1644These scriptlets call ``update-mime-database`` to add the MIME types to
1592the shared database. 1645the shared database.
1593 1646
1647.. _ref-classes-mime-xdg:
1648
1649``mime-xdg``
1650============
1651
1652The :ref:`ref-classes-mime-xdg` class generates the proper
1653post-install and post-remove (postinst/postrm) scriptlets for packages
1654that install ``.desktop`` files containing ``MimeType`` entries.
1655These scriptlets call ``update-desktop-database`` to add the MIME types
1656to the database of MIME types handled by desktop files.
1657
1658Thanks to this class, when users open a file through a file browser
1659on recently created images, they don't have to choose the application
1660to open the file from the pool of all known applications, even the ones
1661that cannot open the selected file.
1662
1663If you have recipes installing their ``.desktop`` files as absolute
1664symbolic links, the detection of such files cannot be done by the current
1665implementation of this class. In this case, you have to add the corresponding
1666package names to the :term:`MIME_XDG_PACKAGES` variable.
1667
1594.. _ref-classes-mirrors: 1668.. _ref-classes-mirrors:
1595 1669
1596``mirrors.bbclass`` 1670``mirrors``
1597=================== 1671===========
1598 1672
1599The ``mirrors`` class sets up some standard 1673The :ref:`ref-classes-mirrors` class sets up some standard
1600:term:`MIRRORS` entries for source code mirrors. These 1674:term:`MIRRORS` entries for source code mirrors. These
1601mirrors provide a fall-back path in case the upstream source specified 1675mirrors provide a fall-back path in case the upstream source specified
1602in :term:`SRC_URI` within recipes is unavailable. 1676in :term:`SRC_URI` within recipes is unavailable.
1603 1677
1604This class is enabled by default since it is inherited by the 1678This class is enabled by default since it is inherited by the
1605:ref:`base <ref-classes-base>` class. 1679:ref:`ref-classes-base` class.
1606 1680
1607.. _ref-classes-module: 1681.. _ref-classes-module:
1608 1682
1609``module.bbclass`` 1683``module``
1610================== 1684==========
1611 1685
1612The ``module`` class provides support for building out-of-tree Linux 1686The :ref:`ref-classes-module` class provides support for building out-of-tree Linux
1613kernel modules. The class inherits the 1687kernel modules. The class inherits the :ref:`ref-classes-module-base` and
1614:ref:`module-base <ref-classes-module-base>` and 1688:ref:`ref-classes-kernel-module-split` classes, and implements the
1615:ref:`kernel-module-split <ref-classes-kernel-module-split>` classes, 1689:ref:`ref-tasks-compile` and :ref:`ref-tasks-install` tasks. The class provides
1616and implements the :ref:`ref-tasks-compile` and
1617:ref:`ref-tasks-install` tasks. The class provides
1618everything needed to build and package a kernel module. 1690everything needed to build and package a kernel module.
1619 1691
1620For general information on out-of-tree Linux kernel modules, see the 1692For general information on out-of-tree Linux kernel modules, see the
@@ -1623,50 +1695,49 @@ section in the Yocto Project Linux Kernel Development Manual.
1623 1695
1624.. _ref-classes-module-base: 1696.. _ref-classes-module-base:
1625 1697
1626``module-base.bbclass`` 1698``module-base``
1627======================= 1699===============
1628 1700
1629The ``module-base`` class provides the base functionality for building 1701The :ref:`ref-classes-module-base` class provides the base functionality for
1630Linux kernel modules. Typically, a recipe that builds software that 1702building Linux kernel modules. Typically, a recipe that builds software that
1631includes one or more kernel modules and has its own means of building 1703includes one or more kernel modules and has its own means of building the module
1632the module inherits this class as opposed to inheriting the 1704inherits this class as opposed to inheriting the :ref:`ref-classes-module`
1633:ref:`module <ref-classes-module>` class. 1705class.
1634 1706
1635.. _ref-classes-multilib*: 1707.. _ref-classes-multilib*:
1636 1708
1637``multilib*.bbclass`` 1709``multilib*``
1638===================== 1710=============
1639 1711
1640The ``multilib*`` classes provide support for building libraries with 1712The :ref:`ref-classes-multilib*` classes provide support for building libraries with
1641different target optimizations or target architectures and installing 1713different target optimizations or target architectures and installing
1642them side-by-side in the same image. 1714them side-by-side in the same image.
1643 1715
1644For more information on using the Multilib feature, see the 1716For more information on using the Multilib feature, see the
1645":ref:`dev-manual/common-tasks:combining multiple versions of library files into one image`" 1717":ref:`dev-manual/libraries:combining multiple versions of library files into one image`"
1646section in the Yocto Project Development Tasks Manual. 1718section in the Yocto Project Development Tasks Manual.
1647 1719
1648.. _ref-classes-native: 1720.. _ref-classes-native:
1649 1721
1650``native.bbclass`` 1722``native``
1651================== 1723==========
1652 1724
1653The ``native`` class provides common functionality for recipes that 1725The :ref:`ref-classes-native` class provides common functionality for recipes that
1654build tools to run on the :term:`Build Host` (i.e. tools that use the compiler 1726build tools to run on the :term:`Build Host` (i.e. tools that use the compiler
1655or other tools from the build host). 1727or other tools from the build host).
1656 1728
1657You can create a recipe that builds tools that run natively on the host 1729You can create a recipe that builds tools that run natively on the host
1658a couple different ways: 1730a couple different ways:
1659 1731
1660- Create a myrecipe\ ``-native.bb`` recipe that inherits the ``native`` 1732- Create a ``myrecipe-native.bb`` recipe that inherits the :ref:`ref-classes-native`
1661 class. If you use this method, you must order the inherit statement 1733 class. If you use this method, you must order the inherit statement
1662 in the recipe after all other inherit statements so that the 1734 in the recipe after all other inherit statements so that the
1663 ``native`` class is inherited last. 1735 :ref:`ref-classes-native` class is inherited last.
1664 1736
1665 .. note:: 1737 .. note::
1666 1738
1667 When creating a recipe this way, the recipe name must follow this 1739 When creating a recipe this way, the recipe name must follow this
1668 naming convention: 1740 naming convention::
1669 ::
1670 1741
1671 myrecipe-native.bb 1742 myrecipe-native.bb
1672 1743
@@ -1674,79 +1745,86 @@ a couple different ways:
1674 Not using this naming convention can lead to subtle problems 1745 Not using this naming convention can lead to subtle problems
1675 caused by existing code that depends on that naming convention. 1746 caused by existing code that depends on that naming convention.
1676 1747
1677- Create or modify a target recipe that contains the following: 1748- Or, create a :ref:`ref-classes-native` variant of any target recipe (e.g.
1678 :: 1749 ``myrecipe.bb``) by adding the following to the recipe::
1679 1750
1680 BBCLASSEXTEND = "native" 1751 BBCLASSEXTEND = "native"
1681 1752
1682 Inside the 1753 Inside the
1683 recipe, use ``_class-native`` and ``_class-target`` overrides to 1754 recipe, use ``:class-native`` and ``:class-target`` overrides to
1684 specify any functionality specific to the respective native or target 1755 specify any functionality specific to the respective native or target
1685 case. 1756 case.
1686 1757
1687Although applied differently, the ``native`` class is used with both 1758Although applied differently, the :ref:`ref-classes-native` class is used with both
1688methods. The advantage of the second method is that you do not need to 1759methods. The advantage of the second method is that you do not need to
1689have two separate recipes (assuming you need both) for native and 1760have two separate recipes (assuming you need both) for native and
1690target. All common parts of the recipe are automatically shared. 1761target. All common parts of the recipe are automatically shared.
1691 1762
1692.. _ref-classes-nativesdk: 1763.. _ref-classes-nativesdk:
1693 1764
1694``nativesdk.bbclass`` 1765``nativesdk``
1695===================== 1766=============
1696 1767
1697The ``nativesdk`` class provides common functionality for recipes that 1768The :ref:`ref-classes-nativesdk` class provides common functionality for recipes that
1698wish to build tools to run as part of an SDK (i.e. tools that run on 1769wish to build tools to run as part of an SDK (i.e. tools that run on
1699:term:`SDKMACHINE`). 1770:term:`SDKMACHINE`).
1700 1771
1701You can create a recipe that builds tools that run on the SDK machine a 1772You can create a recipe that builds tools that run on the SDK machine a
1702couple different ways: 1773couple different ways:
1703 1774
1704- Create a ``nativesdk-``\ myrecipe\ ``.bb`` recipe that inherits the 1775- Create a ``nativesdk-myrecipe.bb`` recipe that inherits the
1705 ``nativesdk`` class. If you use this method, you must order the 1776 :ref:`ref-classes-nativesdk` class. If you use this method, you must order the
1706 inherit statement in the recipe after all other inherit statements so 1777 inherit statement in the recipe after all other inherit statements so
1707 that the ``nativesdk`` class is inherited last. 1778 that the :ref:`ref-classes-nativesdk` class is inherited last.
1708 1779
1709- Create a ``nativesdk`` variant of any recipe by adding the following: 1780 .. note::
1710 ::
1711 1781
1712 BBCLASSEXTEND = "nativesdk" 1782 When creating a recipe, you must follow this naming convention::
1713 1783
1714 Inside the 1784 nativesdk-myrecipe.bb
1715 recipe, use ``_class-nativesdk`` and ``_class-target`` overrides to
1716 specify any functionality specific to the respective SDK machine or
1717 target case.
1718 1785
1719.. note::
1720 1786
1721 When creating a recipe, you must follow this naming convention: 1787 Not doing so can lead to subtle problems because there is code that
1722 :: 1788 depends on the naming convention.
1723 1789
1724 nativesdk-myrecipe.bb 1790- Or, create a :ref:`ref-classes-nativesdk` variant of any target recipe (e.g.
1791 ``myrecipe.bb``) by adding the following to the recipe::
1725 1792
1793 BBCLASSEXTEND = "nativesdk"
1726 1794
1727 Not doing so can lead to subtle problems because code exists that 1795 Inside the
1728 depends on the naming convention. 1796 recipe, use ``:class-nativesdk`` and ``:class-target`` overrides to
1797 specify any functionality specific to the respective SDK machine or
1798 target case.
1729 1799
1730Although applied differently, the ``nativesdk`` class is used with both 1800Although applied differently, the :ref:`ref-classes-nativesdk` class is used with both
1731methods. The advantage of the second method is that you do not need to 1801methods. The advantage of the second method is that you do not need to
1732have two separate recipes (assuming you need both) for the SDK machine 1802have two separate recipes (assuming you need both) for the SDK machine
1733and the target. All common parts of the recipe are automatically shared. 1803and the target. All common parts of the recipe are automatically shared.
1734 1804
1735.. _ref-classes-nopackages: 1805.. _ref-classes-nopackages:
1736 1806
1737``nopackages.bbclass`` 1807``nopackages``
1738====================== 1808==============
1739 1809
1740Disables packaging tasks for those recipes and classes where packaging 1810Disables packaging tasks for those recipes and classes where packaging
1741is not needed. 1811is not needed.
1742 1812
1813.. _ref-classes-nospdx:
1814
1815``nospdx``
1816==========
1817
1818The :ref:`ref-classes-nospdx` allows a recipe to opt out of SPDX
1819generation provided by :ref:`ref-classes-create-spdx`.
1820
1743.. _ref-classes-npm: 1821.. _ref-classes-npm:
1744 1822
1745``npm.bbclass`` 1823``npm``
1746=============== 1824=======
1747 1825
1748Provides support for building Node.js software fetched using the `node 1826Provides support for building Node.js software fetched using the
1749package manager (NPM) <https://en.wikipedia.org/wiki/Npm_(software)>`__. 1827:wikipedia:`node package manager (NPM) <Npm_(software)>`.
1750 1828
1751.. note:: 1829.. note::
1752 1830
@@ -1754,77 +1832,175 @@ package manager (NPM) <https://en.wikipedia.org/wiki/Npm_(software)>`__.
1754 fetcher to have dependencies fetched and packaged automatically. 1832 fetcher to have dependencies fetched and packaged automatically.
1755 1833
1756For information on how to create NPM packages, see the 1834For information on how to create NPM packages, see the
1757":ref:`dev-manual/common-tasks:creating node package manager (npm) packages`" 1835":ref:`dev-manual/packages:creating node package manager (npm) packages`"
1758section in the Yocto Project Development Tasks Manual. 1836section in the Yocto Project Development Tasks Manual.
1759 1837
1760.. _ref-classes-oelint: 1838.. _ref-classes-oelint:
1761 1839
1762``oelint.bbclass`` 1840``oelint``
1763================== 1841==========
1764 1842
1765The ``oelint`` class is an obsolete lint checking tool that exists in 1843The :ref:`ref-classes-oelint` class is an obsolete lint checking tool available in
1766``meta/classes`` in the :term:`Source Directory`. 1844``meta/classes`` in the :term:`Source Directory`.
1767 1845
1768A number of classes exist that could be generally useful in OE-Core but 1846There are some classes that could be generally useful in OE-Core but
1769are never actually used within OE-Core itself. The ``oelint`` class is 1847are never actually used within OE-Core itself. The :ref:`ref-classes-oelint` class is
1770one such example. However, being aware of this class can reduce the 1848one such example. However, being aware of this class can reduce the
1771proliferation of different versions of similar classes across multiple 1849proliferation of different versions of similar classes across multiple
1772layers. 1850layers.
1773 1851
1852.. _ref-classes-overlayfs:
1853
1854``overlayfs``
1855=============
1856
1857It's often desired in Embedded System design to have a read-only root filesystem.
1858But a lot of different applications might want to have read-write access to
1859some parts of a filesystem. It can be especially useful when your update mechanism
1860overwrites the whole root filesystem, but you may want your application data to be preserved
1861between updates. The :ref:`ref-classes-overlayfs` class provides a way
1862to achieve that by means of ``overlayfs`` and at the same time keeping the base
1863root filesystem read-only.
1864
1865To use this class, set a mount point for a partition ``overlayfs`` is going to use as upper
1866layer in your machine configuration. The underlying file system can be anything that
1867is supported by ``overlayfs``. This has to be done in your machine configuration::
1868
1869 OVERLAYFS_MOUNT_POINT[data] = "/data"
1870
1871.. note::
1872
1873 * QA checks fail to catch file existence if you redefine this variable in your recipe!
1874 * Only the existence of the systemd mount unit file is checked, not its contents.
1875 * To get more details on ``overlayfs``, its internals and supported operations, please refer
1876 to the official documentation of the `Linux kernel <https://www.kernel.org/doc/html/latest/filesystems/overlayfs.html>`__.
1877
1878The class assumes you have a ``data.mount`` systemd unit defined elsewhere in your BSP
1879(e.g. in ``systemd-machine-units`` recipe) and it's installed into the image.
1880
1881Then you can specify writable directories on a recipe basis (e.g. in my-application.bb)::
1882
1883 OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application"
1884
1885To support several mount points you can use a different variable flag. Assuming we
1886want to have a writable location on the file system, but do not need that the data
1887survives a reboot, then we could have a ``mnt-overlay.mount`` unit for a ``tmpfs``
1888file system.
1889
1890In your machine configuration::
1891
1892 OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
1893
1894and then in your recipe::
1895
1896 OVERLAYFS_WRITABLE_PATHS[mnt-overlay] = "/usr/share/another-application"
1897
1898On a practical note, your application recipe might require multiple
1899overlays to be mounted before running to avoid writing to the underlying
1900file system (which can be forbidden in case of read-only file system)
1901To achieve that :ref:`ref-classes-overlayfs` provides a ``systemd``
1902helper service for mounting overlays. This helper service is named
1903``${PN}-overlays.service`` and can be depended on in your application recipe
1904(named ``application`` in the following example) ``systemd`` unit by adding
1905to the unit the following::
1906
1907 [Unit]
1908 After=application-overlays.service
1909 Requires=application-overlays.service
1910
1911.. note::
1912
1913 The class does not support the ``/etc`` directory itself, because ``systemd`` depends on it.
1914 In order to get ``/etc`` in overlayfs, see :ref:`ref-classes-overlayfs-etc`.
1915
1916.. _ref-classes-overlayfs-etc:
1917
1918``overlayfs-etc``
1919=================
1920
1921In order to have the ``/etc`` directory in overlayfs a special handling at early
1922boot stage is required. The idea is to supply a custom init script that mounts
1923``/etc`` before launching the actual init program, because the latter already
1924requires ``/etc`` to be mounted.
1925
1926Example usage in image recipe::
1927
1928 IMAGE_FEATURES += "overlayfs-etc"
1929
1930.. note::
1931
1932 This class must not be inherited directly. Use :term:`IMAGE_FEATURES` or :term:`EXTRA_IMAGE_FEATURES`
1933
1934Your machine configuration should define at least the device, mount point, and file system type
1935you are going to use for ``overlayfs``::
1936
1937 OVERLAYFS_ETC_MOUNT_POINT = "/data"
1938 OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2"
1939 OVERLAYFS_ETC_FSTYPE ?= "ext4"
1940
1941To control more mount options you should consider setting mount options
1942(``defaults`` is used by default)::
1943
1944 OVERLAYFS_ETC_MOUNT_OPTIONS = "wsync"
1945
1946The class provides two options for ``/sbin/init`` generation:
1947
1948- The default option is to rename the original ``/sbin/init`` to ``/sbin/init.orig``
1949 and place the generated init under original name, i.e. ``/sbin/init``. It has an advantage
1950 that you won't need to change any kernel parameters in order to make it work,
1951 but it poses a restriction that package-management can't be used, because updating
1952 the init manager would remove the generated script.
1953
1954- If you wish to keep original init as is, you can set::
1955
1956 OVERLAYFS_ETC_USE_ORIG_INIT_NAME = "0"
1957
1958 Then the generated init will be named ``/sbin/preinit`` and you would need to extend your
1959 kernel parameters manually in your bootloader configuration.
1960
1774.. _ref-classes-own-mirrors: 1961.. _ref-classes-own-mirrors:
1775 1962
1776``own-mirrors.bbclass`` 1963``own-mirrors``
1777======================= 1964===============
1778 1965
1779The ``own-mirrors`` class makes it easier to set up your own 1966The :ref:`ref-classes-own-mirrors` class makes it easier to set up your own
1780:term:`PREMIRRORS` from which to first fetch source 1967:term:`PREMIRRORS` from which to first fetch source
1781before attempting to fetch it from the upstream specified in 1968before attempting to fetch it from the upstream specified in
1782:term:`SRC_URI` within each recipe. 1969:term:`SRC_URI` within each recipe.
1783 1970
1784To use this class, inherit it globally and specify 1971To use this class, inherit it globally and specify
1785:term:`SOURCE_MIRROR_URL`. Here is an example: 1972:term:`SOURCE_MIRROR_URL`. Here is an example::
1786::
1787 1973
1788 INHERIT += "own-mirrors" 1974 INHERIT += "own-mirrors"
1789 SOURCE_MIRROR_URL = "http://example.com/my-source-mirror" 1975 SOURCE_MIRROR_URL = "http://example.com/my-source-mirror"
1790 1976
1791You can specify only a single URL 1977You can specify only a single URL
1792in ``SOURCE_MIRROR_URL``. 1978in :term:`SOURCE_MIRROR_URL`.
1793 1979
1794.. _ref-classes-package: 1980.. _ref-classes-package:
1795 1981
1796``package.bbclass`` 1982``package``
1797=================== 1983===========
1798 1984
1799The ``package`` class supports generating packages from a build's 1985The :ref:`ref-classes-package` class supports generating packages from a build's
1800output. The core generic functionality is in ``package.bbclass``. The 1986output. The core generic functionality is in ``package.bbclass``. The
1801code specific to particular package types resides in these 1987code specific to particular package types resides in these
1802package-specific classes: 1988package-specific classes: :ref:`ref-classes-package_deb`,
1803:ref:`package_deb <ref-classes-package_deb>`, 1989:ref:`ref-classes-package_rpm`, :ref:`ref-classes-package_ipk`.
1804:ref:`package_rpm <ref-classes-package_rpm>`,
1805:ref:`package_ipk <ref-classes-package_ipk>`, and
1806:ref:`package_tar <ref-classes-package_tar>`.
1807
1808.. note::
1809
1810 The
1811 package_tar
1812 class is broken and not supported. It is recommended that you do not
1813 use this class.
1814 1990
1815You can control the list of resulting package formats by using the 1991You can control the list of resulting package formats by using the
1816``PACKAGE_CLASSES`` variable defined in your ``conf/local.conf`` 1992:term:`PACKAGE_CLASSES` variable defined in your ``conf/local.conf``
1817configuration file, which is located in the :term:`Build Directory`. 1993configuration file, which is located in the :term:`Build Directory`.
1818When defining the variable, you can 1994When defining the variable, you can specify one or more package types.
1819specify one or more package types. Since images are generated from 1995Since images are generated from packages, a packaging class is needed
1820packages, a packaging class is needed to enable image generation. The 1996to enable image generation. The first class listed in this variable is
1821first class listed in this variable is used for image generation. 1997used for image generation.
1822 1998
1823If you take the optional step to set up a repository (package feed) on 1999If you take the optional step to set up a repository (package feed) on
1824the development host that can be used by DNF, you can install packages 2000the development host that can be used by DNF, you can install packages
1825from the feed while you are running the image on the target (i.e. 2001from the feed while you are running the image on the target (i.e.
1826runtime installation of packages). For more information, see the 2002runtime installation of packages). For more information, see the
1827":ref:`dev-manual/common-tasks:using runtime package management`" 2003":ref:`dev-manual/packages:using runtime package management`"
1828section in the Yocto Project Development Tasks Manual. 2004section in the Yocto Project Development Tasks Manual.
1829 2005
1830The package-specific class you choose can affect build-time performance 2006The package-specific class you choose can affect build-time performance
@@ -1834,8 +2010,8 @@ the same or similar package. This comparison takes into account a
1834complete build of the package with all dependencies previously built. 2010complete build of the package with all dependencies previously built.
1835The reason for this discrepancy is because the RPM package manager 2011The reason for this discrepancy is because the RPM package manager
1836creates and processes more :term:`Metadata` than the IPK package 2012creates and processes more :term:`Metadata` than the IPK package
1837manager. Consequently, you might consider setting ``PACKAGE_CLASSES`` to 2013manager. Consequently, you might consider setting :term:`PACKAGE_CLASSES` to
1838"package_ipk" if you are building smaller systems. 2014":ref:`ref-classes-package_ipk`" if you are building smaller systems.
1839 2015
1840Before making your package manager decision, however, you should 2016Before making your package manager decision, however, you should
1841consider some further things about using RPM: 2017consider some further things about using RPM:
@@ -1860,120 +2036,200 @@ at these two Yocto Project mailing list links:
1860 2036
1861.. _ref-classes-package_deb: 2037.. _ref-classes-package_deb:
1862 2038
1863``package_deb.bbclass`` 2039``package_deb``
1864======================= 2040===============
1865 2041
1866The ``package_deb`` class provides support for creating packages that 2042The :ref:`ref-classes-package_deb` class provides support for creating packages that
1867use the Debian (i.e. ``.deb``) file format. The class ensures the 2043use the Debian (i.e. ``.deb``) file format. The class ensures the
1868packages are written out in a ``.deb`` file format to the 2044packages are written out in a ``.deb`` file format to the
1869``${``\ :term:`DEPLOY_DIR_DEB`\ ``}`` directory. 2045``${``\ :term:`DEPLOY_DIR_DEB`\ ``}`` directory.
1870 2046
1871This class inherits the :ref:`package <ref-classes-package>` class and 2047This class inherits the :ref:`ref-classes-package` class and
1872is enabled through the :term:`PACKAGE_CLASSES` 2048is enabled through the :term:`PACKAGE_CLASSES`
1873variable in the ``local.conf`` file. 2049variable in the ``local.conf`` file.
1874 2050
1875.. _ref-classes-package_ipk: 2051.. _ref-classes-package_ipk:
1876 2052
1877``package_ipk.bbclass`` 2053``package_ipk``
1878======================= 2054===============
1879 2055
1880The ``package_ipk`` class provides support for creating packages that 2056The :ref:`ref-classes-package_ipk` class provides support for creating packages that
1881use the IPK (i.e. ``.ipk``) file format. The class ensures the packages 2057use the IPK (i.e. ``.ipk``) file format. The class ensures the packages
1882are written out in a ``.ipk`` file format to the 2058are written out in a ``.ipk`` file format to the
1883``${``\ :term:`DEPLOY_DIR_IPK`\ ``}`` directory. 2059``${``\ :term:`DEPLOY_DIR_IPK`\ ``}`` directory.
1884 2060
1885This class inherits the :ref:`package <ref-classes-package>` class and 2061This class inherits the :ref:`ref-classes-package` class and
1886is enabled through the :term:`PACKAGE_CLASSES` 2062is enabled through the :term:`PACKAGE_CLASSES`
1887variable in the ``local.conf`` file. 2063variable in the ``local.conf`` file.
1888 2064
1889.. _ref-classes-package_rpm: 2065.. _ref-classes-package_rpm:
1890 2066
1891``package_rpm.bbclass`` 2067``package_rpm``
1892======================= 2068===============
1893 2069
1894The ``package_rpm`` class provides support for creating packages that 2070The :ref:`ref-classes-package_rpm` class provides support for creating packages that
1895use the RPM (i.e. ``.rpm``) file format. The class ensures the packages 2071use the RPM (i.e. ``.rpm``) file format. The class ensures the packages
1896are written out in a ``.rpm`` file format to the 2072are written out in a ``.rpm`` file format to the
1897``${``\ :term:`DEPLOY_DIR_RPM`\ ``}`` directory. 2073``${``\ :term:`DEPLOY_DIR_RPM`\ ``}`` directory.
1898 2074
1899This class inherits the :ref:`package <ref-classes-package>` class and 2075This class inherits the :ref:`ref-classes-package` class and
1900is enabled through the :term:`PACKAGE_CLASSES` 2076is enabled through the :term:`PACKAGE_CLASSES`
1901variable in the ``local.conf`` file. 2077variable in the ``local.conf`` file.
1902 2078
1903.. _ref-classes-package_tar:
1904
1905``package_tar.bbclass``
1906=======================
1907
1908The ``package_tar`` class provides support for creating tarballs. The
1909class ensures the packages are written out in a tarball format to the
1910``${``\ :term:`DEPLOY_DIR_TAR`\ ``}`` directory.
1911
1912This class inherits the :ref:`package <ref-classes-package>` class and
1913is enabled through the :term:`PACKAGE_CLASSES`
1914variable in the ``local.conf`` file.
1915
1916.. note::
1917
1918 You cannot specify the ``package_tar`` class first using the
1919 ``PACKAGE_CLASSES`` variable. You must use ``.deb``, ``.ipk``, or ``.rpm``
1920 file formats for your image or SDK.
1921
1922.. _ref-classes-packagedata: 2079.. _ref-classes-packagedata:
1923 2080
1924``packagedata.bbclass`` 2081``packagedata``
1925======================= 2082===============
1926 2083
1927The ``packagedata`` class provides common functionality for reading 2084The :ref:`ref-classes-packagedata` class provides common functionality for reading
1928``pkgdata`` files found in :term:`PKGDATA_DIR`. These 2085``pkgdata`` files found in :term:`PKGDATA_DIR`. These
1929files contain information about each output package produced by the 2086files contain information about each output package produced by the
1930OpenEmbedded build system. 2087OpenEmbedded build system.
1931 2088
1932This class is enabled by default because it is inherited by the 2089This class is enabled by default because it is inherited by the
1933:ref:`package <ref-classes-package>` class. 2090:ref:`ref-classes-package` class.
1934 2091
1935.. _ref-classes-packagegroup: 2092.. _ref-classes-packagegroup:
1936 2093
1937``packagegroup.bbclass`` 2094``packagegroup``
1938======================== 2095================
1939 2096
1940The ``packagegroup`` class sets default values appropriate for package 2097The :ref:`ref-classes-packagegroup` class sets default values appropriate for package
1941group recipes (e.g. ``PACKAGES``, ``PACKAGE_ARCH``, ``ALLOW_EMPTY``, and 2098group recipes (e.g. :term:`PACKAGES`, :term:`PACKAGE_ARCH`, :term:`ALLOW_EMPTY`, and
1942so forth). It is highly recommended that all package group recipes 2099so forth). It is highly recommended that all package group recipes
1943inherit this class. 2100inherit this class.
1944 2101
1945For information on how to use this class, see the 2102For information on how to use this class, see the
1946":ref:`dev-manual/common-tasks:customizing images using custom package groups`" 2103":ref:`dev-manual/customizing-images:customizing images using custom package groups`"
1947section in the Yocto Project Development Tasks Manual. 2104section in the Yocto Project Development Tasks Manual.
1948 2105
1949Previously, this class was called the ``task`` class. 2106Previously, this class was called the ``task`` class.
1950 2107
1951.. _ref-classes-patch: 2108.. _ref-classes-patch:
1952 2109
1953``patch.bbclass`` 2110``patch``
1954================= 2111=========
1955 2112
1956The ``patch`` class provides all functionality for applying patches 2113The :ref:`ref-classes-patch` class provides all functionality for applying patches
1957during the :ref:`ref-tasks-patch` task. 2114during the :ref:`ref-tasks-patch` task.
1958 2115
1959This class is enabled by default because it is inherited by the 2116This class is enabled by default because it is inherited by the
1960:ref:`base <ref-classes-base>` class. 2117:ref:`ref-classes-base` class.
1961 2118
1962.. _ref-classes-perlnative: 2119.. _ref-classes-perlnative:
1963 2120
1964``perlnative.bbclass`` 2121``perlnative``
1965====================== 2122==============
1966 2123
1967When inherited by a recipe, the ``perlnative`` class supports using the 2124When inherited by a recipe, the :ref:`ref-classes-perlnative` class supports using the
1968native version of Perl built by the build system rather than using the 2125native version of Perl built by the build system rather than using the
1969version provided by the build host. 2126version provided by the build host.
1970 2127
2128.. _ref-classes-pypi:
2129
2130``pypi``
2131========
2132
2133The :ref:`ref-classes-pypi` class sets variables appropriately for recipes that build
2134Python modules from `PyPI <https://pypi.org/>`__, the Python Package Index.
2135By default it determines the PyPI package name based upon :term:`BPN`
2136(stripping the "python-" or "python3-" prefix off if present), however in
2137some cases you may need to set it manually in the recipe by setting
2138:term:`PYPI_PACKAGE`.
2139
2140Variables set by the :ref:`ref-classes-pypi` class include :term:`SRC_URI`, :term:`SECTION`,
2141:term:`HOMEPAGE`, :term:`UPSTREAM_CHECK_URI`, :term:`UPSTREAM_CHECK_REGEX`
2142and :term:`CVE_PRODUCT`.
2143
2144.. _ref-classes-python_flit_core:
2145
2146``python_flit_core``
2147====================
2148
2149The :ref:`ref-classes-python_flit_core` class enables building Python modules which declare
2150the `PEP-517 <https://www.python.org/dev/peps/pep-0517/>`__ compliant
2151``flit_core.buildapi`` ``build-backend`` in the ``[build-system]``
2152section of ``pyproject.toml`` (See `PEP-518 <https://www.python.org/dev/peps/pep-0518/>`__).
2153
2154Python modules built with ``flit_core.buildapi`` are pure Python (no
2155``C`` or ``Rust`` extensions).
2156
2157Internally this uses the :ref:`ref-classes-python_pep517` class.
2158
2159.. _ref-classes-python_maturin:
2160
2161``python_maturin``
2162==================
2163
2164The :ref:`ref-classes-python_maturin` class provides support for python-maturin, a replacement
2165for setuptools_rust and another "backend" for building Python Wheels.
2166
2167.. _ref-classes-python_mesonpy:
2168
2169``python_mesonpy``
2170==================
2171
2172The :ref:`ref-classes-python_mesonpy` class enables building Python modules which use the
2173meson-python build system.
2174
2175Internally this uses the :ref:`ref-classes-python_pep517` class.
2176
2177.. _ref-classes-python_pep517:
2178
2179``python_pep517``
2180=================
2181
2182The :ref:`ref-classes-python_pep517` class builds and installs a Python ``wheel`` binary
2183archive (see `PEP-517 <https://peps.python.org/pep-0517/>`__).
2184
2185Recipes wouldn't inherit this directly, instead typically another class will
2186inherit this and add the relevant native dependencies.
2187
2188Examples of classes which do this are :ref:`ref-classes-python_flit_core`,
2189:ref:`ref-classes-python_setuptools_build_meta`, and
2190:ref:`ref-classes-python_poetry_core`.
2191
2192.. _ref-classes-python_poetry_core:
2193
2194``python_poetry_core``
2195======================
2196
2197The :ref:`ref-classes-python_poetry_core` class enables building Python modules which use the
2198`Poetry Core <https://python-poetry.org>`__ build system.
2199
2200Internally this uses the :ref:`ref-classes-python_pep517` class.
2201
2202.. _ref-classes-python_pyo3:
2203
2204``python_pyo3``
2205===============
2206
2207The :ref:`ref-classes-python_pyo3` class helps make sure that Python extensions
2208written in Rust and built with `PyO3 <https://pyo3.rs/>`__, properly set up the
2209environment for cross compilation.
2210
2211This class is internal to the :ref:`ref-classes-python-setuptools3_rust` class
2212and is not meant to be used directly in recipes.
2213
2214.. _ref-classes-python-setuptools3_rust:
2215
2216``python-setuptools3_rust``
2217===========================
2218
2219The :ref:`ref-classes-python-setuptools3_rust` class enables building Python
2220extensions implemented in Rust with `PyO3 <https://pyo3.rs/>`__, which allows
2221to compile and distribute Python extensions written in Rust as easily
2222as if they were written in C.
2223
2224This class inherits the :ref:`ref-classes-setuptools3` and
2225:ref:`ref-classes-python_pyo3` classes.
2226
1971.. _ref-classes-pixbufcache: 2227.. _ref-classes-pixbufcache:
1972 2228
1973``pixbufcache.bbclass`` 2229``pixbufcache``
1974======================= 2230===============
1975 2231
1976The ``pixbufcache`` class generates the proper post-install and 2232The :ref:`ref-classes-pixbufcache` class generates the proper post-install and
1977post-remove (postinst/postrm) scriptlets for packages that install 2233post-remove (postinst/postrm) scriptlets for packages that install
1978pixbuf loaders, which are used with ``gdk-pixbuf``. These scriptlets 2234pixbuf loaders, which are used with ``gdk-pixbuf``. These scriptlets
1979call ``update_pixbuf_cache`` to add the pixbuf loaders to the cache. 2235call ``update_pixbuf_cache`` to add the pixbuf loaders to the cache.
@@ -1988,24 +2244,24 @@ containing the loaders.
1988 2244
1989.. _ref-classes-pkgconfig: 2245.. _ref-classes-pkgconfig:
1990 2246
1991``pkgconfig.bbclass`` 2247``pkgconfig``
1992===================== 2248=============
1993 2249
1994The ``pkgconfig`` class provides a standard way to get header and 2250The :ref:`ref-classes-pkgconfig` class provides a standard way to get header and
1995library information by using ``pkg-config``. This class aims to smooth 2251library information by using ``pkg-config``. This class aims to smooth
1996integration of ``pkg-config`` into libraries that use it. 2252integration of ``pkg-config`` into libraries that use it.
1997 2253
1998During staging, BitBake installs ``pkg-config`` data into the 2254During staging, BitBake installs ``pkg-config`` data into the
1999``sysroots/`` directory. By making use of sysroot functionality within 2255``sysroots/`` directory. By making use of sysroot functionality within
2000``pkg-config``, the ``pkgconfig`` class no longer has to manipulate the 2256``pkg-config``, the :ref:`ref-classes-pkgconfig` class no longer has to manipulate the
2001files. 2257files.
2002 2258
2003.. _ref-classes-populate-sdk: 2259.. _ref-classes-populate-sdk:
2004 2260
2005``populate_sdk.bbclass`` 2261``populate_sdk``
2006======================== 2262================
2007 2263
2008The ``populate_sdk`` class provides support for SDK-only recipes. For 2264The :ref:`ref-classes-populate-sdk` class provides support for SDK-only recipes. For
2009information on advantages gained when building a cross-development 2265information on advantages gained when building a cross-development
2010toolchain using the :ref:`ref-tasks-populate_sdk` 2266toolchain using the :ref:`ref-tasks-populate_sdk`
2011task, see the ":ref:`sdk-manual/appendix-obtain:building an sdk installer`" 2267task, see the ":ref:`sdk-manual/appendix-obtain:building an sdk installer`"
@@ -2014,40 +2270,39 @@ Software Development Kit (eSDK) manual.
2014 2270
2015.. _ref-classes-populate-sdk-*: 2271.. _ref-classes-populate-sdk-*:
2016 2272
2017``populate_sdk_*.bbclass`` 2273``populate_sdk_*``
2018========================== 2274==================
2019 2275
2020The ``populate_sdk_*`` classes support SDK creation and consist of the 2276The :ref:`ref-classes-populate-sdk-*` classes support SDK creation and consist of the
2021following classes: 2277following classes:
2022 2278
2023- ``populate_sdk_base``: The base class supporting SDK creation under 2279- :ref:`populate_sdk_base <ref-classes-populate-sdk-*>`: The base class supporting SDK creation under
2024 all package managers (i.e. DEB, RPM, and opkg). 2280 all package managers (i.e. DEB, RPM, and opkg).
2025 2281
2026- ``populate_sdk_deb``: Supports creation of the SDK given the Debian 2282- :ref:`populate_sdk_deb <ref-classes-populate-sdk-*>`: Supports creation of the SDK given the Debian
2027 package manager. 2283 package manager.
2028 2284
2029- ``populate_sdk_rpm``: Supports creation of the SDK given the RPM 2285- :ref:`populate_sdk_rpm <ref-classes-populate-sdk-*>`: Supports creation of the SDK given the RPM
2030 package manager. 2286 package manager.
2031 2287
2032- ``populate_sdk_ipk``: Supports creation of the SDK given the opkg 2288- :ref:`populate_sdk_ipk <ref-classes-populate-sdk-*>`: Supports creation of the SDK given the opkg
2033 (IPK format) package manager. 2289 (IPK format) package manager.
2034 2290
2035- ``populate_sdk_ext``: Supports extensible SDK creation under all 2291- :ref:`populate_sdk_ext <ref-classes-populate-sdk-*>`: Supports extensible SDK creation under all
2036 package managers. 2292 package managers.
2037 2293
2038The ``populate_sdk_base`` class inherits the appropriate 2294The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class inherits the appropriate
2039``populate_sdk_*`` (i.e. ``deb``, ``rpm``, and ``ipk``) based on 2295``populate_sdk_*`` (i.e. ``deb``, ``rpm``, and ``ipk``) based on
2040:term:`IMAGE_PKGTYPE`. 2296:term:`IMAGE_PKGTYPE`.
2041 2297
2042The base class ensures all source and destination directories are 2298The base class ensures all source and destination directories are
2043established and then populates the SDK. After populating the SDK, the 2299established and then populates the SDK. After populating the SDK, the
2044``populate_sdk_base`` class constructs two sysroots: 2300:ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class constructs two sysroots:
2045``${``\ :term:`SDK_ARCH`\ ``}-nativesdk``, which 2301``${``\ :term:`SDK_ARCH`\ ``}-nativesdk``, which
2046contains the cross-compiler and associated tooling, and the target, 2302contains the cross-compiler and associated tooling, and the target,
2047which contains a target root filesystem that is configured for the SDK 2303which contains a target root filesystem that is configured for the SDK
2048usage. These two images reside in :term:`SDK_OUTPUT`, 2304usage. These two images reside in :term:`SDK_OUTPUT`,
2049which consists of the following: 2305which consists of the following::
2050::
2051 2306
2052 ${SDK_OUTPUT}/${SDK_ARCH}-nativesdk-pkgs 2307 ${SDK_OUTPUT}/${SDK_ARCH}-nativesdk-pkgs
2053 ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/target-pkgs 2308 ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/target-pkgs
@@ -2055,9 +2310,9 @@ which consists of the following:
2055Finally, the base populate SDK class creates the toolchain environment 2310Finally, the base populate SDK class creates the toolchain environment
2056setup script, the tarball of the SDK, and the installer. 2311setup script, the tarball of the SDK, and the installer.
2057 2312
2058The respective ``populate_sdk_deb``, ``populate_sdk_rpm``, and 2313The respective :ref:`populate_sdk_deb <ref-classes-populate-sdk-*>`, :ref:`populate_sdk_rpm <ref-classes-populate-sdk-*>`, and
2059``populate_sdk_ipk`` classes each support the specific type of SDK. 2314:ref:`populate_sdk_ipk <ref-classes-populate-sdk-*>` classes each support the specific type of SDK.
2060These classes are inherited by and used with the ``populate_sdk_base`` 2315These classes are inherited by and used with the :ref:`populate_sdk_base <ref-classes-populate-sdk-*>`
2061class. 2316class.
2062 2317
2063For more information on the cross-development toolchain generation, see 2318For more information on the cross-development toolchain generation, see
@@ -2072,10 +2327,10 @@ Software Development Kit (eSDK) manual.
2072 2327
2073.. _ref-classes-prexport: 2328.. _ref-classes-prexport:
2074 2329
2075``prexport.bbclass`` 2330``prexport``
2076==================== 2331============
2077 2332
2078The ``prexport`` class provides functionality for exporting 2333The :ref:`ref-classes-prexport` class provides functionality for exporting
2079:term:`PR` values. 2334:term:`PR` values.
2080 2335
2081.. note:: 2336.. note::
@@ -2085,10 +2340,10 @@ The ``prexport`` class provides functionality for exporting
2085 2340
2086.. _ref-classes-primport: 2341.. _ref-classes-primport:
2087 2342
2088``primport.bbclass`` 2343``primport``
2089==================== 2344============
2090 2345
2091The ``primport`` class provides functionality for importing 2346The :ref:`ref-classes-primport` class provides functionality for importing
2092:term:`PR` values. 2347:term:`PR` values.
2093 2348
2094.. note:: 2349.. note::
@@ -2098,130 +2353,156 @@ The ``primport`` class provides functionality for importing
2098 2353
2099.. _ref-classes-prserv: 2354.. _ref-classes-prserv:
2100 2355
2101``prserv.bbclass`` 2356``prserv``
2102================== 2357==========
2103 2358
2104The ``prserv`` class provides functionality for using a :ref:`PR 2359The :ref:`ref-classes-prserv` class provides functionality for using a :ref:`PR
2105service <dev-manual/common-tasks:working with a pr service>` in order to 2360service <dev-manual/packages:working with a pr service>` in order to
2106automatically manage the incrementing of the :term:`PR` 2361automatically manage the incrementing of the :term:`PR`
2107variable for each recipe. 2362variable for each recipe.
2108 2363
2109This class is enabled by default because it is inherited by the 2364This class is enabled by default because it is inherited by the
2110:ref:`package <ref-classes-package>` class. However, the OpenEmbedded 2365:ref:`ref-classes-package` class. However, the OpenEmbedded
2111build system will not enable the functionality of this class unless 2366build system will not enable the functionality of this class unless
2112:term:`PRSERV_HOST` has been set. 2367:term:`PRSERV_HOST` has been set.
2113 2368
2114.. _ref-classes-ptest: 2369.. _ref-classes-ptest:
2115 2370
2116``ptest.bbclass`` 2371``ptest``
2117================= 2372=========
2118 2373
2119The ``ptest`` class provides functionality for packaging and installing 2374The :ref:`ref-classes-ptest` class provides functionality for packaging and installing
2120runtime tests for recipes that build software that provides these tests. 2375runtime tests for recipes that build software that provides these tests.
2121 2376
2122This class is intended to be inherited by individual recipes. However, 2377This class is intended to be inherited by individual recipes. However,
2123the class' functionality is largely disabled unless "ptest" appears in 2378the class' functionality is largely disabled unless "ptest" appears in
2124:term:`DISTRO_FEATURES`. See the 2379:term:`DISTRO_FEATURES`. See the
2125":ref:`dev-manual/common-tasks:testing packages with ptest`" 2380":ref:`test-manual/ptest:testing packages with ptest`"
2126section in the Yocto Project Development Tasks Manual for more information 2381section in the Yocto Project Development Tasks Manual for more information
2127on ptest. 2382on ptest.
2128 2383
2384.. _ref-classes-ptest-cargo:
2385
2386``ptest-cargo``
2387===============
2388
2389The :ref:`ref-classes-ptest-cargo` class is a class which extends the
2390:ref:`ref-classes-cargo` class and adds ``compile_ptest_cargo`` and
2391``install_ptest_cargo`` steps to respectively build and install
2392test suites defined in the ``Cargo.toml`` file, into a dedicated
2393``-ptest`` package.
2394
2129.. _ref-classes-ptest-gnome: 2395.. _ref-classes-ptest-gnome:
2130 2396
2131``ptest-gnome.bbclass`` 2397``ptest-gnome``
2132======================= 2398===============
2133 2399
2134Enables package tests (ptests) specifically for GNOME packages, which 2400Enables package tests (ptests) specifically for GNOME packages, which
2135have tests intended to be executed with ``gnome-desktop-testing``. 2401have tests intended to be executed with ``gnome-desktop-testing``.
2136 2402
2137For information on setting up and running ptests, see the 2403For information on setting up and running ptests, see the
2138":ref:`dev-manual/common-tasks:testing packages with ptest`" 2404":ref:`test-manual/ptest:testing packages with ptest`"
2139section in the Yocto Project Development Tasks Manual. 2405section in the Yocto Project Development Tasks Manual.
2140 2406
2141.. _ref-classes-python-dir: 2407.. _ref-classes-ptest-python-pytest:
2142 2408
2143``python-dir.bbclass`` 2409``ptest-python-pytest``
2144====================== 2410=======================
2411
2412The :ref:`ref-classes-ptest-python-pytest` class can be inherited in Python-based
2413recipes to automatically configure the :ref:`ref-classes-ptest` class for Python
2414packages leveraging the `pytest <https://docs.pytest.org>`__ unit test framework.
2415
2416Within the recipe, the :term:`PTEST_PYTEST_DIR` variable specifies the path to
2417the directory containing the tests that will be installed in :term:`D` by the
2418:ref:`ref-tasks-install_ptest_base` task, as well as a specific ``run-ptest``
2419script for this task.
2145 2420
2146The ``python-dir`` class provides the base version, location, and site 2421.. _ref-classes-python3-dir:
2147package location for Python. 2422
2423``python3-dir``
2424===============
2425
2426The :ref:`ref-classes-python3-dir` class provides the base version, location, and site
2427package location for Python 3.
2148 2428
2149.. _ref-classes-python3native: 2429.. _ref-classes-python3native:
2150 2430
2151``python3native.bbclass`` 2431``python3native``
2152========================= 2432=================
2153 2433
2154The ``python3native`` class supports using the native version of Python 2434The :ref:`ref-classes-python3native` class supports using the native version of Python
21553 built by the build system rather than support of the version provided 24353 built by the build system rather than support of the version provided
2156by the build host. 2436by the build host.
2157 2437
2158.. _ref-classes-pythonnative: 2438.. _ref-classes-python3targetconfig:
2159 2439
2160``pythonnative.bbclass`` 2440``python3targetconfig``
2161======================== 2441=======================
2162 2442
2163When inherited by a recipe, the ``pythonnative`` class supports using 2443The :ref:`ref-classes-python3targetconfig` class supports using the native version of Python
2164the native version of Python built by the build system rather than using 24443 built by the build system rather than support of the version provided
2165the version provided by the build host. 2445by the build host, except that the configuration for the target machine
2446is accessible (such as correct installation directories). This also adds a
2447dependency on target ``python3``, so should only be used where appropriate
2448in order to avoid unnecessarily lengthening builds.
2166 2449
2167.. _ref-classes-qemu: 2450.. _ref-classes-qemu:
2168 2451
2169``qemu.bbclass`` 2452``qemu``
2170================ 2453========
2171 2454
2172The ``qemu`` class provides functionality for recipes that either need 2455The :ref:`ref-classes-qemu` class provides functionality for recipes that either need
2173QEMU or test for the existence of QEMU. Typically, this class is used to 2456QEMU or test for the existence of QEMU. Typically, this class is used to
2174run programs for a target system on the build host using QEMU's 2457run programs for a target system on the build host using QEMU's
2175application emulation mode. 2458application emulation mode.
2176 2459
2177.. _ref-classes-recipe_sanity: 2460.. _ref-classes-recipe_sanity:
2178 2461
2179``recipe_sanity.bbclass`` 2462``recipe_sanity``
2180========================= 2463=================
2181 2464
2182The ``recipe_sanity`` class checks for the presence of any host system 2465The :ref:`ref-classes-recipe_sanity` class checks for the presence of any host system
2183recipe prerequisites that might affect the build (e.g. variables that 2466recipe prerequisites that might affect the build (e.g. variables that
2184are set or software that is present). 2467are set or software that is present).
2185 2468
2186.. _ref-classes-relocatable: 2469.. _ref-classes-relocatable:
2187 2470
2188``relocatable.bbclass`` 2471``relocatable``
2189======================= 2472===============
2190 2473
2191The ``relocatable`` class enables relocation of binaries when they are 2474The :ref:`ref-classes-relocatable` class enables relocation of binaries when they are
2192installed into the sysroot. 2475installed into the sysroot.
2193 2476
2194This class makes use of the :ref:`chrpath <ref-classes-chrpath>` class 2477This class makes use of the :ref:`ref-classes-chrpath` class and is used by
2195and is used by both the :ref:`cross <ref-classes-cross>` and 2478both the :ref:`ref-classes-cross` and :ref:`ref-classes-native` classes.
2196:ref:`native <ref-classes-native>` classes.
2197 2479
2198.. _ref-classes-remove-libtool: 2480.. _ref-classes-remove-libtool:
2199 2481
2200``remove-libtool.bbclass`` 2482``remove-libtool``
2201========================== 2483==================
2202 2484
2203The ``remove-libtool`` class adds a post function to the 2485The :ref:`ref-classes-remove-libtool` class adds a post function to the
2204:ref:`ref-tasks-install` task to remove all ``.la`` files 2486:ref:`ref-tasks-install` task to remove all ``.la`` files
2205installed by ``libtool``. Removing these files results in them being 2487installed by ``libtool``. Removing these files results in them being
2206absent from both the sysroot and target packages. 2488absent from both the sysroot and target packages.
2207 2489
2208If a recipe needs the ``.la`` files to be installed, then the recipe can 2490If a recipe needs the ``.la`` files to be installed, then the recipe can
2209override the removal by setting ``REMOVE_LIBTOOL_LA`` to "0" as follows: 2491override the removal by setting ``REMOVE_LIBTOOL_LA`` to "0" as follows::
2210::
2211 2492
2212 REMOVE_LIBTOOL_LA = "0" 2493 REMOVE_LIBTOOL_LA = "0"
2213 2494
2214.. note:: 2495.. note::
2215 2496
2216 The ``remove-libtool`` class is not enabled by default. 2497 The :ref:`ref-classes-remove-libtool` class is not enabled by default.
2217 2498
2218.. _ref-classes-report-error: 2499.. _ref-classes-report-error:
2219 2500
2220``report-error.bbclass`` 2501``report-error``
2221======================== 2502================
2222 2503
2223The ``report-error`` class supports enabling the :ref:`error reporting 2504The :ref:`ref-classes-report-error` class supports enabling the :ref:`error reporting
2224tool <dev-manual/common-tasks:using the error reporting tool>`", 2505tool <dev-manual/error-reporting-tool:using the error reporting tool>`",
2225which allows you to submit build error information to a central database. 2506which allows you to submit build error information to a central database.
2226 2507
2227The class collects debug information for recipe, recipe version, task, 2508The class collects debug information for recipe, recipe version, task,
@@ -2230,12 +2511,29 @@ commit, and log. From the information, report files using a JSON format
2230are created and stored in 2511are created and stored in
2231``${``\ :term:`LOG_DIR`\ ``}/error-report``. 2512``${``\ :term:`LOG_DIR`\ ``}/error-report``.
2232 2513
2514.. _ref-classes-retain:
2515
2516``retain``
2517==========
2518
2519The :ref:`ref-classes-retain` class can be used to create a tarball of the work
2520directory for a recipe when one of its tasks fails, or any other nominated
2521directories. It is useful in cases where the environment in which builds are run
2522is ephemeral or otherwise inaccessible for examination during debugging.
2523
2524To enable, add the following to your configuration::
2525
2526 INHERIT += "retain"
2527
2528The class can be disabled for specific recipes using the :term:`RETAIN_ENABLED`
2529variable.
2530
2233.. _ref-classes-rm-work: 2531.. _ref-classes-rm-work:
2234 2532
2235``rm_work.bbclass`` 2533``rm_work``
2236=================== 2534===========
2237 2535
2238The ``rm_work`` class supports deletion of temporary workspace, which 2536The :ref:`ref-classes-rm-work` class supports deletion of temporary workspace, which
2239can ease your hard drive demands during builds. 2537can ease your hard drive demands during builds.
2240 2538
2241The OpenEmbedded build system can use a substantial amount of disk space 2539The OpenEmbedded build system can use a substantial amount of disk space
@@ -2244,61 +2542,76 @@ under the ``${TMPDIR}/work`` directory for each recipe. Once the build
2244system generates the packages for a recipe, the work files for that 2542system generates the packages for a recipe, the work files for that
2245recipe are no longer needed. However, by default, the build system 2543recipe are no longer needed. However, by default, the build system
2246preserves these files for inspection and possible debugging purposes. If 2544preserves these files for inspection and possible debugging purposes. If
2247you would rather have these files deleted to save disk space as the 2545you would rather have these files deleted to save disk space as the build
2248build progresses, you can enable ``rm_work`` by adding the following to 2546progresses, you can enable :ref:`ref-classes-rm-work` by adding the following to
2249your ``local.conf`` file, which is found in the :term:`Build Directory`. 2547your ``local.conf`` file, which is found in the :term:`Build Directory`::
2250::
2251 2548
2252 INHERIT += "rm_work" 2549 INHERIT += "rm_work"
2253 2550
2254If you are 2551If you are modifying and building source code out of the work directory for a
2255modifying and building source code out of the work directory for a 2552recipe, enabling :ref:`ref-classes-rm-work` will potentially result in your
2256recipe, enabling ``rm_work`` will potentially result in your changes to 2553changes to the source being lost. To exclude some recipes from having their work
2257the source being lost. To exclude some recipes from having their work 2554directories deleted by :ref:`ref-classes-rm-work`, you can add the names of the
2258directories deleted by ``rm_work``, you can add the names of the recipe 2555recipe or recipes you are working on to the :term:`RM_WORK_EXCLUDE` variable,
2259or recipes you are working on to the ``RM_WORK_EXCLUDE`` variable, which 2556which can also be set in your ``local.conf`` file. Here is an example::
2260can also be set in your ``local.conf`` file. Here is an example:
2261::
2262 2557
2263 RM_WORK_EXCLUDE += "busybox glibc" 2558 RM_WORK_EXCLUDE += "busybox glibc"
2264 2559
2265.. _ref-classes-rootfs*: 2560.. _ref-classes-rootfs*:
2266 2561
2267``rootfs*.bbclass`` 2562``rootfs*``
2268=================== 2563===========
2269 2564
2270The ``rootfs*`` classes support creating the root filesystem for an 2565The :ref:`ref-classes-rootfs*` classes support creating the root filesystem for an
2271image and consist of the following classes: 2566image and consist of the following classes:
2272 2567
2273- The ``rootfs-postcommands`` class, which defines filesystem 2568- The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class, which defines filesystem
2274 post-processing functions for image recipes. 2569 post-processing functions for image recipes.
2275 2570
2276- The ``rootfs_deb`` class, which supports creation of root filesystems 2571- The :ref:`rootfs_deb <ref-classes-rootfs*>` class, which supports creation of root filesystems
2277 for images built using ``.deb`` packages. 2572 for images built using ``.deb`` packages.
2278 2573
2279- The ``rootfs_rpm`` class, which supports creation of root filesystems 2574- The :ref:`rootfs_rpm <ref-classes-rootfs*>` class, which supports creation of root filesystems
2280 for images built using ``.rpm`` packages. 2575 for images built using ``.rpm`` packages.
2281 2576
2282- The ``rootfs_ipk`` class, which supports creation of root filesystems 2577- The :ref:`rootfs_ipk <ref-classes-rootfs*>` class, which supports creation of root filesystems
2283 for images built using ``.ipk`` packages. 2578 for images built using ``.ipk`` packages.
2284 2579
2285- The ``rootfsdebugfiles`` class, which installs additional files found 2580- The :ref:`rootfsdebugfiles <ref-classes-rootfs*>` class, which installs additional files found
2286 on the build host directly into the root filesystem. 2581 on the build host directly into the root filesystem.
2287 2582
2288The root filesystem is created from packages using one of the 2583The root filesystem is created from packages using one of the
2289``rootfs*.bbclass`` files as determined by the 2584:ref:`ref-classes-rootfs*` files as determined by the :term:`PACKAGE_CLASSES`
2290:term:`PACKAGE_CLASSES` variable. 2585variable.
2291 2586
2292For information on how root filesystem images are created, see the 2587For information on how root filesystem images are created, see the
2293":ref:`overview-manual/concepts:image generation`" 2588":ref:`overview-manual/concepts:image generation`"
2294section in the Yocto Project Overview and Concepts Manual. 2589section in the Yocto Project Overview and Concepts Manual.
2295 2590
2591.. _ref-classes-rust:
2592
2593``rust``
2594========
2595
2596The :ref:`ref-classes-rust` class is an internal class which is just used
2597in the "rust" recipe, to build the Rust compiler and runtime
2598library. Except for this recipe, it is not intended to be used directly.
2599
2600.. _ref-classes-rust-common:
2601
2602``rust-common``
2603===============
2604
2605The :ref:`ref-classes-rust-common` class is an internal class to the
2606:ref:`ref-classes-cargo_common` and :ref:`ref-classes-rust` classes and is not
2607intended to be used directly.
2608
2296.. _ref-classes-sanity: 2609.. _ref-classes-sanity:
2297 2610
2298``sanity.bbclass`` 2611``sanity``
2299================== 2612==========
2300 2613
2301The ``sanity`` class checks to see if prerequisite software is present 2614The :ref:`ref-classes-sanity` class checks to see if prerequisite software is present
2302on the host system so that users can be notified of potential problems 2615on the host system so that users can be notified of potential problems
2303that might affect their build. The class also performs basic user 2616that might affect their build. The class also performs basic user
2304configuration checks from the ``local.conf`` configuration file to 2617configuration checks from the ``local.conf`` configuration file to
@@ -2307,72 +2620,108 @@ usually determines whether to include this class.
2307 2620
2308.. _ref-classes-scons: 2621.. _ref-classes-scons:
2309 2622
2310``scons.bbclass`` 2623``scons``
2311================= 2624=========
2312 2625
2313The ``scons`` class supports recipes that need to build software that 2626The :ref:`ref-classes-scons` class supports recipes that need to build software
2314uses the SCons build system. You can use the 2627that uses the SCons build system. You can use the :term:`EXTRA_OESCONS`
2315:term:`EXTRA_OESCONS` variable to specify 2628variable to specify additional configuration options you want to pass SCons
2316additional configuration options you want to pass SCons command line. 2629command line.
2317 2630
2318.. _ref-classes-sdl: 2631.. _ref-classes-sdl:
2319 2632
2320``sdl.bbclass`` 2633``sdl``
2321=============== 2634=======
2322 2635
2323The ``sdl`` class supports recipes that need to build software that uses 2636The :ref:`ref-classes-sdl` class supports recipes that need to build software that uses
2324the Simple DirectMedia Layer (SDL) library. 2637the Simple DirectMedia Layer (SDL) library.
2325 2638
2326.. _ref-classes-setuptools: 2639.. _ref-classes-python_setuptools_build_meta:
2327 2640
2328``setuptools.bbclass`` 2641``python_setuptools_build_meta``
2329====================== 2642================================
2330 2643
2331The ``setuptools`` class supports Python version 2.x extensions that use 2644The :ref:`ref-classes-python_setuptools_build_meta` class enables building
2332build systems based on ``setuptools``. If your recipe uses these build 2645Python modules which declare the
2333systems, the recipe needs to inherit the ``setuptools`` class. 2646`PEP-517 <https://www.python.org/dev/peps/pep-0517/>`__ compliant
2647``setuptools.build_meta`` ``build-backend`` in the ``[build-system]``
2648section of ``pyproject.toml`` (See `PEP-518 <https://www.python.org/dev/peps/pep-0518/>`__).
2334 2649
2335.. _ref-classes-setuptools3: 2650Python modules built with ``setuptools.build_meta`` can be pure Python or
2651include ``C`` or ``Rust`` extensions).
2336 2652
2337``setuptools3.bbclass`` 2653Internally this uses the :ref:`ref-classes-python_pep517` class.
2338======================= 2654
2655.. _ref-classes-setuptools3:
2339 2656
2340The ``setuptools3`` class supports Python version 3.x extensions that 2657``setuptools3``
2341use build systems based on ``setuptools3``. If your recipe uses these 2658===============
2342build systems, the recipe needs to inherit the ``setuptools3`` class.
2343 2659
2344.. _ref-classes-sign_rpm: 2660The :ref:`ref-classes-setuptools3` class supports Python version 3.x extensions
2661that use build systems based on ``setuptools`` (e.g. only have a ``setup.py``
2662and have not migrated to the official ``pyproject.toml`` format). If your recipe
2663uses these build systems, the recipe needs to inherit the
2664:ref:`ref-classes-setuptools3` class.
2345 2665
2346``sign_rpm.bbclass`` 2666 .. note::
2347====================
2348 2667
2349The ``sign_rpm`` class supports generating signed RPM packages. 2668 The :ref:`ref-classes-setuptools3` class :ref:`ref-tasks-compile` task now calls
2669 ``setup.py bdist_wheel`` to build the ``wheel`` binary archive format
2670 (See `PEP-427 <https://www.python.org/dev/peps/pep-0427/>`__).
2350 2671
2351.. _ref-classes-sip: 2672 A consequence of this is that legacy software still using deprecated
2673 ``distutils`` from the Python standard library cannot be packaged as
2674 ``wheels``. A common solution is the replace
2675 ``from distutils.core import setup`` with ``from setuptools import setup``.
2352 2676
2353``sip.bbclass`` 2677 .. note::
2354===============
2355 2678
2356The ``sip`` class supports recipes that build or package SIP-based 2679 The :ref:`ref-classes-setuptools3` class :ref:`ref-tasks-install` task now
2357Python bindings. 2680 installs the ``wheel`` binary archive. In current versions of
2681 ``setuptools`` the legacy ``setup.py install`` method is deprecated. If
2682 the ``setup.py`` cannot be used with wheels, for example it creates files
2683 outside of the Python module or standard entry points, then
2684 :ref:`ref-classes-setuptools3_legacy` should be used.
2358 2685
2359.. _ref-classes-siteconfig: 2686.. _ref-classes-setuptools3_legacy:
2360 2687
2361``siteconfig.bbclass`` 2688``setuptools3_legacy``
2362====================== 2689======================
2363 2690
2364The ``siteconfig`` class provides functionality for handling site 2691The :ref:`ref-classes-setuptools3_legacy` class supports
2365configuration. The class is used by the 2692Python version 3.x extensions that use build systems based on ``setuptools``
2366:ref:`autotools <ref-classes-autotools>` class to accelerate the 2693(e.g. only have a ``setup.py`` and have not migrated to the official
2367:ref:`ref-tasks-configure` task. 2694``pyproject.toml`` format). Unlike :ref:`ref-classes-setuptools3`,
2695this uses the traditional ``setup.py`` ``build`` and ``install`` commands and
2696not wheels. This use of ``setuptools`` like this is
2697`deprecated <https://github.com/pypa/setuptools/blob/main/CHANGES.rst#v5830>`__
2698but still relatively common.
2368 2699
2369.. _ref-classes-siteinfo: 2700.. _ref-classes-setuptools3-base:
2370 2701
2371``siteinfo.bbclass`` 2702``setuptools3-base``
2372==================== 2703====================
2373 2704
2374The ``siteinfo`` class provides information about the targets that might 2705The :ref:`ref-classes-setuptools3-base` class provides a reusable base for
2375be needed by other classes or recipes. 2706other classes that support building Python version 3.x extensions. If you need
2707functionality that is not provided by the :ref:`ref-classes-setuptools3` class,
2708you may want to ``inherit setuptools3-base``. Some recipes do not need the tasks
2709in the :ref:`ref-classes-setuptools3` class and inherit this class instead.
2710
2711.. _ref-classes-sign_rpm:
2712
2713``sign_rpm``
2714============
2715
2716The :ref:`ref-classes-sign_rpm` class supports generating signed RPM packages.
2717
2718.. _ref-classes-siteinfo:
2719
2720``siteinfo``
2721============
2722
2723The :ref:`ref-classes-siteinfo` class provides information about the targets
2724that might be needed by other classes or recipes.
2376 2725
2377As an example, consider Autotools, which can require tests that must 2726As an example, consider Autotools, which can require tests that must
2378execute on the target hardware. Since this is not possible in general 2727execute on the target hardware. Since this is not possible in general
@@ -2381,20 +2730,20 @@ results so these tests can be skipped over but still make the correct
2381values available. The ``meta/site directory`` contains test results 2730values available. The ``meta/site directory`` contains test results
2382sorted into different categories such as architecture, endianness, and 2731sorted into different categories such as architecture, endianness, and
2383the ``libc`` used. Site information provides a list of files containing 2732the ``libc`` used. Site information provides a list of files containing
2384data relevant to the current build in the ``CONFIG_SITE`` variable that 2733data relevant to the current build in the :term:`CONFIG_SITE` variable that
2385Autotools automatically picks up. 2734Autotools automatically picks up.
2386 2735
2387The class also provides variables like ``SITEINFO_ENDIANNESS`` and 2736The class also provides variables like :term:`SITEINFO_ENDIANNESS` and
2388``SITEINFO_BITS`` that can be used elsewhere in the metadata. 2737:term:`SITEINFO_BITS` that can be used elsewhere in the metadata.
2389 2738
2390.. _ref-classes-sstate: 2739.. _ref-classes-sstate:
2391 2740
2392``sstate.bbclass`` 2741``sstate``
2393================== 2742==========
2394 2743
2395The ``sstate`` class provides support for Shared State (sstate). By 2744The :ref:`ref-classes-sstate` class provides support for Shared State (sstate).
2396default, the class is enabled through the 2745By default, the class is enabled through the :term:`INHERIT_DISTRO` variable's
2397:term:`INHERIT_DISTRO` variable's default value. 2746default value.
2398 2747
2399For more information on sstate, see the 2748For more information on sstate, see the
2400":ref:`overview-manual/concepts:shared state cache`" 2749":ref:`overview-manual/concepts:shared state cache`"
@@ -2402,10 +2751,10 @@ section in the Yocto Project Overview and Concepts Manual.
2402 2751
2403.. _ref-classes-staging: 2752.. _ref-classes-staging:
2404 2753
2405``staging.bbclass`` 2754``staging``
2406=================== 2755===========
2407 2756
2408The ``staging`` class installs files into individual recipe work 2757The :ref:`ref-classes-staging` class installs files into individual recipe work
2409directories for sysroots. The class contains the following key tasks: 2758directories for sysroots. The class contains the following key tasks:
2410 2759
2411- The :ref:`ref-tasks-populate_sysroot` task, 2760- The :ref:`ref-tasks-populate_sysroot` task,
@@ -2418,25 +2767,25 @@ directories for sysroots. The class contains the following key tasks:
2418 installs the files into the individual recipe work directories (i.e. 2767 installs the files into the individual recipe work directories (i.e.
2419 :term:`WORKDIR`). 2768 :term:`WORKDIR`).
2420 2769
2421The code in the ``staging`` class is complex and basically works in two 2770The code in the :ref:`ref-classes-staging` class is complex and basically works
2422stages: 2771in two stages:
2423 2772
2424- *Stage One:* The first stage addresses recipes that have files they 2773- *Stage One:* The first stage addresses recipes that have files they
2425 want to share with other recipes that have dependencies on the 2774 want to share with other recipes that have dependencies on the
2426 originating recipe. Normally these dependencies are installed through 2775 originating recipe. Normally these dependencies are installed through
2427 the :ref:`ref-tasks-install` task into 2776 the :ref:`ref-tasks-install` task into
2428 ``${``\ :term:`D`\ ``}``. The ``do_populate_sysroot`` task 2777 ``${``\ :term:`D`\ ``}``. The :ref:`ref-tasks-populate_sysroot` task
2429 copies a subset of these files into ``${SYSROOT_DESTDIR}``. This 2778 copies a subset of these files into ``${SYSROOT_DESTDIR}``. This
2430 subset of files is controlled by the 2779 subset of files is controlled by the
2431 :term:`SYSROOT_DIRS`, 2780 :term:`SYSROOT_DIRS`,
2432 :term:`SYSROOT_DIRS_NATIVE`, and 2781 :term:`SYSROOT_DIRS_NATIVE`, and
2433 :term:`SYSROOT_DIRS_BLACKLIST` 2782 :term:`SYSROOT_DIRS_IGNORE`
2434 variables. 2783 variables.
2435 2784
2436 .. note:: 2785 .. note::
2437 2786
2438 Additionally, a recipe can customize the files further by 2787 Additionally, a recipe can customize the files further by
2439 declaring a processing function in the ``SYSROOT_PREPROCESS_FUNCS`` 2788 declaring a processing function in the :term:`SYSROOT_PREPROCESS_FUNCS`
2440 variable. 2789 variable.
2441 2790
2442 A shared state (sstate) object is built from these files and the 2791 A shared state (sstate) object is built from these files and the
@@ -2478,11 +2827,11 @@ stages:
2478 recommended for general use, the files do allow some issues such 2827 recommended for general use, the files do allow some issues such
2479 as user creation and module indexes to be addressed. 2828 as user creation and module indexes to be addressed.
2480 2829
2481 Because recipes can have other dependencies outside of ``DEPENDS`` 2830 Because recipes can have other dependencies outside of :term:`DEPENDS`
2482 (e.g. ``do_unpack[depends] += "tar-native:do_populate_sysroot"``), 2831 (e.g. ``do_unpack[depends] += "tar-native:do_populate_sysroot"``),
2483 the sysroot creation function ``extend_recipe_sysroot`` is also added 2832 the sysroot creation function ``extend_recipe_sysroot`` is also added
2484 as a pre-function for those tasks whose dependencies are not through 2833 as a pre-function for those tasks whose dependencies are not through
2485 ``DEPENDS`` but operate similarly. 2834 :term:`DEPENDS` but operate similarly.
2486 2835
2487 When installing dependencies into the sysroot, the code traverses the 2836 When installing dependencies into the sysroot, the code traverses the
2488 dependency graph and processes dependencies in exactly the same way 2837 dependency graph and processes dependencies in exactly the same way
@@ -2492,8 +2841,7 @@ stages:
2492 dependencies traversed or installed. The same sstate dependency code 2841 dependencies traversed or installed. The same sstate dependency code
2493 is used so that builds should be identical regardless of whether 2842 is used so that builds should be identical regardless of whether
2494 sstate was used or not. For a closer look, see the 2843 sstate was used or not. For a closer look, see the
2495 ``setscene_depvalid()`` function in the 2844 ``setscene_depvalid()`` function in the :ref:`ref-classes-sstate` class.
2496 :ref:`sstate <ref-classes-sstate>` class.
2497 2845
2498 The build system is careful to maintain manifests of the files it 2846 The build system is careful to maintain manifests of the files it
2499 installs so that any given dependency can be installed as needed. The 2847 installs so that any given dependency can be installed as needed. The
@@ -2502,11 +2850,11 @@ stages:
2502 2850
2503.. _ref-classes-syslinux: 2851.. _ref-classes-syslinux:
2504 2852
2505``syslinux.bbclass`` 2853``syslinux``
2506==================== 2854============
2507 2855
2508The ``syslinux`` class provides syslinux-specific functions for building 2856The :ref:`ref-classes-syslinux` class provides syslinux-specific functions for
2509bootable images. 2857building bootable images.
2510 2858
2511The class supports the following variables: 2859The class supports the following variables:
2512 2860
@@ -2545,11 +2893,11 @@ The class supports the following variables:
2545 2893
2546.. _ref-classes-systemd: 2894.. _ref-classes-systemd:
2547 2895
2548``systemd.bbclass`` 2896``systemd``
2549=================== 2897===========
2550 2898
2551The ``systemd`` class provides support for recipes that install systemd 2899The :ref:`ref-classes-systemd` class provides support for recipes that install
2552unit files. 2900systemd unit files.
2553 2901
2554The functionality for this class is disabled unless you have "systemd" 2902The functionality for this class is disabled unless you have "systemd"
2555in :term:`DISTRO_FEATURES`. 2903in :term:`DISTRO_FEATURES`.
@@ -2566,36 +2914,35 @@ You should set :term:`SYSTEMD_SERVICE` to the
2566name of the service file. You should also use a package name override to 2914name of the service file. You should also use a package name override to
2567indicate the package to which the value applies. If the value applies to 2915indicate the package to which the value applies. If the value applies to
2568the recipe's main package, use ``${``\ :term:`PN`\ ``}``. Here 2916the recipe's main package, use ``${``\ :term:`PN`\ ``}``. Here
2569is an example from the connman recipe: 2917is an example from the connman recipe::
2570::
2571 2918
2572 SYSTEMD_SERVICE_${PN} = "connman.service" 2919 SYSTEMD_SERVICE:${PN} = "connman.service"
2573 2920
2574Services are set up to start on boot automatically 2921Services are set up to start on boot automatically
2575unless you have set 2922unless you have set
2576:term:`SYSTEMD_AUTO_ENABLE` to "disable". 2923:term:`SYSTEMD_AUTO_ENABLE` to "disable".
2577 2924
2578For more information on ``systemd``, see the 2925For more information on :ref:`ref-classes-systemd`, see the
2579":ref:`dev-manual/common-tasks:selecting an initialization manager`" 2926":ref:`dev-manual/init-manager:selecting an initialization manager`"
2580section in the Yocto Project Development Tasks Manual. 2927section in the Yocto Project Development Tasks Manual.
2581 2928
2582.. _ref-classes-systemd-boot: 2929.. _ref-classes-systemd-boot:
2583 2930
2584``systemd-boot.bbclass`` 2931``systemd-boot``
2585======================== 2932================
2586 2933
2587The ``systemd-boot`` class provides functions specific to the 2934The :ref:`ref-classes-systemd-boot` class provides functions specific to the
2588systemd-boot bootloader for building bootable images. This is an 2935systemd-boot bootloader for building bootable images. This is an
2589internal class and is not intended to be used directly. 2936internal class and is not intended to be used directly.
2590 2937
2591.. note:: 2938.. note::
2592 2939
2593 The ``systemd-boot`` class is a result from merging the ``gummiboot`` class 2940 The :ref:`ref-classes-systemd-boot` class is a result from merging the ``gummiboot`` class
2594 used in previous Yocto Project releases with the ``systemd`` project. 2941 used in previous Yocto Project releases with the ``systemd`` project.
2595 2942
2596Set the :term:`EFI_PROVIDER` variable to 2943Set the :term:`EFI_PROVIDER` variable to ":ref:`ref-classes-systemd-boot`" to
2597"systemd-boot" to use this class. Doing so creates a standalone EFI 2944use this class. Doing so creates a standalone EFI bootloader that is not
2598bootloader that is not dependent on systemd. 2945dependent on systemd.
2599 2946
2600For information on more variables used and supported in this class, see 2947For information on more variables used and supported in this class, see
2601the :term:`SYSTEMD_BOOT_CFG`, 2948the :term:`SYSTEMD_BOOT_CFG`,
@@ -2608,76 +2955,90 @@ for more information.
2608 2955
2609.. _ref-classes-terminal: 2956.. _ref-classes-terminal:
2610 2957
2611``terminal.bbclass`` 2958``terminal``
2612==================== 2959============
2613 2960
2614The ``terminal`` class provides support for starting a terminal session. 2961The :ref:`ref-classes-terminal` class provides support for starting a terminal
2615The :term:`OE_TERMINAL` variable controls which 2962session. The :term:`OE_TERMINAL` variable controls which terminal emulator is
2616terminal emulator is used for the session. 2963used for the session.
2617 2964
2618Other classes use the ``terminal`` class anywhere a separate terminal 2965Other classes use the :ref:`ref-classes-terminal` class anywhere a separate
2619session needs to be started. For example, the 2966terminal session needs to be started. For example, the :ref:`ref-classes-patch`
2620:ref:`patch <ref-classes-patch>` class assuming 2967class assuming :term:`PATCHRESOLVE` is set to "user", the
2621:term:`PATCHRESOLVE` is set to "user", the 2968:ref:`ref-classes-cml1` class, and the :ref:`ref-classes-devshell` class all
2622:ref:`cml1 <ref-classes-cml1>` class, and the 2969use the :ref:`ref-classes-terminal` class.
2623:ref:`devshell <ref-classes-devshell>` class all use the ``terminal``
2624class.
2625 2970
2626.. _ref-classes-testimage*: 2971.. _ref-classes-testexport:
2627 2972
2628``testimage*.bbclass`` 2973``testexport``
2629====================== 2974==============
2975
2976Based on the :ref:`ref-classes-testimage` class, the
2977:ref:`ref-classes-testexport` class can be used to export the test environment
2978outside of the :term:`OpenEmbedded Build System`. This will generate the
2979directory structure to execute the runtime tests using the
2980:oe_git:`runexported.py </openembedded-core/tree/meta/lib/oeqa/runexported.py>`
2981Python script.
2630 2982
2631The ``testimage*`` classes support running automated tests against 2983For more details on how to use :ref:`ref-classes-testexport`, see
2984the :ref:`test-manual/runtime-testing:Exporting Tests` section in the Yocto
2985Project Test Environment Manual.
2986
2987.. _ref-classes-testimage:
2988
2989``testimage``
2990=============
2991
2992The :ref:`ref-classes-testimage` class supports running automated tests against
2632images using QEMU and on actual hardware. The classes handle loading the 2993images using QEMU and on actual hardware. The classes handle loading the
2633tests and starting the image. To use the classes, you need to perform 2994tests and starting the image. To use the classes, you need to perform
2634steps to set up the environment. 2995steps to set up the environment.
2635 2996
2636.. note:: 2997To enable this class, add the following to your configuration::
2637 2998
2638 Best practices include using :term:`IMAGE_CLASSES` rather than 2999 IMAGE_CLASSES += "testimage"
2639 :term:`INHERIT` to inherit the ``testimage`` class for automated image
2640 testing.
2641 3000
2642The tests are commands that run on the target system over ``ssh``. Each 3001The tests are commands that run on the target system over ``ssh``. Each
2643test is written in Python and makes use of the ``unittest`` module. 3002test is written in Python and makes use of the ``unittest`` module.
2644 3003
2645The ``testimage.bbclass`` runs tests on an image when called using the 3004The :ref:`ref-classes-testimage` class runs tests on an image when called using the
2646following: 3005following::
2647::
2648 3006
2649 $ bitbake -c testimage image 3007 $ bitbake -c testimage image
2650 3008
2651The ``testimage-auto`` class 3009Alternatively, if you wish to have tests automatically run for each image
2652runs tests on an image after the image is constructed (i.e. 3010after it is built, you can set :term:`TESTIMAGE_AUTO`::
2653:term:`TESTIMAGE_AUTO` must be set to "1"). 3011
3012 TESTIMAGE_AUTO = "1"
2654 3013
2655For information on how to enable, run, and create new tests, see the 3014For information on how to enable, run, and create new tests, see the
2656":ref:`dev-manual/common-tasks:performing automated runtime testing`" 3015":ref:`test-manual/runtime-testing:performing automated runtime testing`"
2657section in the Yocto Project Development Tasks Manual. 3016section in the Yocto Project Test Environment Manual.
2658 3017
2659.. _ref-classes-testsdk: 3018.. _ref-classes-testsdk:
2660 3019
2661``testsdk.bbclass`` 3020``testsdk``
2662=================== 3021===========
2663 3022
2664This class supports running automated tests against software development 3023This class supports running automated tests against software development
2665kits (SDKs). The ``testsdk`` class runs tests on an SDK when called 3024kits (SDKs). The :ref:`ref-classes-testsdk` class runs tests on an SDK when called
2666using the following: 3025using the following::
2667::
2668 3026
2669 $ bitbake -c testsdk image 3027 $ bitbake -c testsdk image
2670 3028
3029The list of test modules that are run can be controlled with the
3030:term:`TESTSDK_SUITES` variable.
3031
2671.. note:: 3032.. note::
2672 3033
2673 Best practices include using :term:`IMAGE_CLASSES` rather than 3034 Best practices include using :term:`IMAGE_CLASSES` rather than
2674 :term:`INHERIT` to inherit the ``testsdk`` class for automated SDK 3035 :term:`INHERIT` to inherit the :ref:`ref-classes-testsdk` class for automated SDK
2675 testing. 3036 testing.
2676 3037
2677.. _ref-classes-texinfo: 3038.. _ref-classes-texinfo:
2678 3039
2679``texinfo.bbclass`` 3040``texinfo``
2680=================== 3041===========
2681 3042
2682This class should be inherited by recipes whose upstream packages invoke 3043This class should be inherited by recipes whose upstream packages invoke
2683the ``texinfo`` utilities at build-time. Native and cross recipes are 3044the ``texinfo`` utilities at build-time. Native and cross recipes are
@@ -2694,10 +3055,10 @@ host system.
2694 3055
2695.. _ref-classes-toaster: 3056.. _ref-classes-toaster:
2696 3057
2697``toaster.bbclass`` 3058``toaster``
2698=================== 3059===========
2699 3060
2700The ``toaster`` class collects information about packages and images and 3061The :ref:`ref-classes-toaster` class collects information about packages and images and
2701sends them as events that the BitBake user interface can receive. The 3062sends them as events that the BitBake user interface can receive. The
2702class is enabled when the Toaster user interface is running. 3063class is enabled when the Toaster user interface is running.
2703 3064
@@ -2705,49 +3066,232 @@ This class is not intended to be used directly.
2705 3066
2706.. _ref-classes-toolchain-scripts: 3067.. _ref-classes-toolchain-scripts:
2707 3068
2708``toolchain-scripts.bbclass`` 3069``toolchain-scripts``
2709============================= 3070=====================
2710 3071
2711The ``toolchain-scripts`` class provides the scripts used for setting up 3072The :ref:`ref-classes-toolchain-scripts` class provides the scripts used for setting up
2712the environment for installed SDKs. 3073the environment for installed SDKs.
2713 3074
3075.. _ref-classes-toolchain-clang:
3076
3077``toolchain/clang``
3078===================
3079
3080The :ref:`ref-classes-toolchain-clang` class defines commands for building
3081recipes with Clang/LLVM compiler and utilities.
3082
3083This class is not meant to be inherited directly. Instead, you should either:
3084
3085- set the :term:`PREFERRED_TOOLCHAIN_TARGET`, :term:`PREFERRED_TOOLCHAIN_NATIVE`
3086 or :term:`PREFERRED_TOOLCHAIN_SDK` variables to "clang" from a
3087 :term:`Configuration File`. This will make the :ref:`ref-classes-base` class
3088 use the :ref:`ref-classes-toolchain-clang` accordingly. All recipes will
3089 be built with the Clang/LLVM toolchain, exception be made for recipes that
3090 override the value of :term:`TOOLCHAIN` or :term:`TOOLCHAIN_NATIVE` to
3091 another value.
3092
3093- set :term:`TOOLCHAIN` or :term:`TOOLCHAIN_NATIVE` to "clang" from a recipe
3094 when the recipe needs to override the default toolchain set by
3095 :term:`PREFERRED_TOOLCHAIN_TARGET`, :term:`PREFERRED_TOOLCHAIN_NATIVE` or
3096 :term:`PREFERRED_TOOLCHAIN_SDK`.
3097
3098.. _ref-classes-toolchain-clang-native:
3099
3100``toolchain/clang-native``
3101==========================
3102
3103The :ref:`ref-classes-toolchain-clang-native` class defines commands for
3104building :ref:`ref-classes-native` recipes with Clang/LLVM compiler and
3105utilities independently of the build context.
3106
3107The :ref:`ref-classes-toolchain-gcc-native` class defines :term:`BUILD_CC`,
3108:term:`BUILD_CXX` and other such variables which are rarely used in recipes.
3109Exception be made for target recipes that need to use the compiler from the
3110build host at some point during the build.
3111
3112This class should not be inherited directly. It is inherited by the
3113:ref:`ref-classes-base` class if :term:`TOOLCHAIN_NATIVE` is set to "clang".
3114
3115.. _ref-classes-toolchain-gcc:
3116
3117``toolchain/gcc``
3118=================
3119
3120The :ref:`ref-classes-toolchain-gcc` class defines commands for building
3121recipes with GCC/Binutils compiler and utilities.
3122
3123This class is not meant to be inherited directly. Instead, you should either:
3124
3125- set the :term:`PREFERRED_TOOLCHAIN_TARGET`, :term:`PREFERRED_TOOLCHAIN_NATIVE`
3126 or :term:`PREFERRED_TOOLCHAIN_SDK` variables to "gcc" from a
3127 :term:`Configuration File`. This will make the :ref:`ref-classes-base` class
3128 use the :ref:`ref-classes-toolchain-gcc` accordingly. All recipes will
3129 be built with the GCC/Binutils toolchain, exception be made for recipes that
3130 override the value of :term:`TOOLCHAIN` or :term:`TOOLCHAIN_NATIVE` to
3131 another value.
3132
3133- set :term:`TOOLCHAIN` or :term:`TOOLCHAIN_NATIVE` to "gcc" from a recipe
3134 when the recipe needs to override the default toolchain set by
3135 :term:`PREFERRED_TOOLCHAIN_TARGET`, :term:`PREFERRED_TOOLCHAIN_NATIVE` or
3136 :term:`PREFERRED_TOOLCHAIN_SDK`.
3137
3138.. _ref-classes-toolchain-gcc-native:
3139
3140``toolchain/gcc-native``
3141========================
3142
3143The :ref:`ref-classes-toolchain-gcc-native` class defines commands for building
3144:ref:`ref-classes-native` recipes with GCC/Binutils compiler and utilities
3145independently of the build context.
3146
3147The :ref:`ref-classes-toolchain-gcc-native` class defines :term:`BUILD_CC`,
3148:term:`BUILD_CXX` and other such variables which are rarely used in recipes.
3149Exception be made for target recipes that need to use the compiler from the build
3150host at some point during the build.
3151
3152This class should not be inherited directly. It is inherited by the
3153:ref:`ref-classes-base` class if :term:`TOOLCHAIN_NATIVE` is set to "gcc".
3154
2714.. _ref-classes-typecheck: 3155.. _ref-classes-typecheck:
2715 3156
2716``typecheck.bbclass`` 3157``typecheck``
2717===================== 3158=============
2718 3159
2719The ``typecheck`` class provides support for validating the values of 3160The :ref:`ref-classes-typecheck` class provides support for validating the values of
2720variables set at the configuration level against their defined types. 3161variables set at the configuration level against their defined types.
2721The OpenEmbedded build system allows you to define the type of a 3162The OpenEmbedded build system allows you to define the type of a
2722variable using the "type" varflag. Here is an example: 3163variable using the "type" varflag. Here is an example::
2723::
2724 3164
2725 IMAGE_FEATURES[type] = "list" 3165 IMAGE_FEATURES[type] = "list"
2726 3166
2727.. _ref-classes-uboot-config: 3167.. _ref-classes-uboot-config:
2728 3168
2729``uboot-config.bbclass`` 3169``uboot-config``
2730======================== 3170================
2731 3171
2732The ``uboot-config`` class provides support for U-Boot configuration for 3172The :ref:`ref-classes-uboot-config` class provides support for U-Boot configuration for
2733a machine. Specify the machine in your recipe as follows: 3173a machine. Specify the machine in your recipe as follows::
2734::
2735 3174
2736 UBOOT_CONFIG ??= <default> 3175 UBOOT_CONFIG ??= <default>
2737 UBOOT_CONFIG[foo] = "config,images" 3176 UBOOT_CONFIG[foo] = "config,images,binary"
2738 3177
2739You can also specify the machine using this method: 3178You can also specify the machine using this method::
2740::
2741 3179
2742 UBOOT_MACHINE = "config" 3180 UBOOT_MACHINE = "config"
2743 3181
2744See the :term:`UBOOT_CONFIG` and :term:`UBOOT_MACHINE` variables for additional 3182See the :term:`UBOOT_CONFIG` and :term:`UBOOT_MACHINE` variables for additional
2745information. 3183information.
2746 3184
3185.. _ref-classes-uboot-sign:
3186
3187``uboot-sign``
3188==============
3189
3190The :ref:`ref-classes-uboot-sign` class provides support for U-Boot verified boot.
3191It is intended to be inherited from U-Boot recipes.
3192
3193The variables used by this class are:
3194
3195- :term:`SPL_MKIMAGE_DTCOPTS`: DTC options for U-Boot ``mkimage`` when
3196 building the FIT image.
3197- :term:`SPL_SIGN_ENABLE`: enable signing the FIT image.
3198- :term:`SPL_SIGN_KEYDIR`: directory containing the signing keys.
3199- :term:`SPL_SIGN_KEYNAME`: base filename of the signing keys.
3200- :term:`SPL_DTB_BINARY`: Name of the SPL device tree binary. Can be set to an
3201 empty string to indicate that no SPL should be created and added to the FIT
3202 image.
3203- :term:`UBOOT_FIT_ADDRESS_CELLS`: ``#address-cells`` value for the FIT image.
3204- :term:`UBOOT_FIT_DESC`: description string encoded into the FIT image.
3205- :term:`UBOOT_FIT_GENERATE_KEYS`: generate the keys if they don't exist yet.
3206- :term:`UBOOT_FIT_HASH_ALG`: hash algorithm for the FIT image.
3207- :term:`UBOOT_FIT_KEY_GENRSA_ARGS`: ``openssl genrsa`` arguments.
3208- :term:`UBOOT_FIT_KEY_REQ_ARGS`: ``openssl req`` arguments.
3209- :term:`UBOOT_FIT_SIGN_ALG`: signature algorithm for the FIT image.
3210- :term:`UBOOT_FIT_SIGN_NUMBITS`: size of the private key for FIT image
3211 signing.
3212- :term:`UBOOT_FIT_KEY_SIGN_PKCS`: algorithm for the public key certificate
3213 for FIT image signing.
3214- :term:`UBOOT_FITIMAGE_ENABLE`: enable the generation of a U-Boot FIT image.
3215- :term:`UBOOT_MKIMAGE_DTCOPTS`: DTC options for U-Boot ``mkimage`` when
3216 rebuilding the FIT image containing the kernel.
3217- :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`: include the Trusted Firmware-A
3218 (TF-A) binary in the U-Boot FIT image.
3219- :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`: specifies the path to the
3220 Trusted Firmware-A (TF-A) binary.
3221- :term:`UBOOT_FIT_TEE`: include the Trusted Execution Environment (TEE)
3222 binary in the U-Boot FIT image.
3223- :term:`UBOOT_FIT_TEE_IMAGE`: specifies the path to the Trusted Execution
3224 Environment (TEE) binary.
3225- :term:`UBOOT_FIT_USER_SETTINGS`: adds a user-specific snippet to the U-Boot
3226 Image Tree Source (ITS). Users can include their custom U-Boot Image Tree
3227 Source (ITS) snippet in this variable.
3228- :term:`UBOOT_FIT_CONF_FIRMWARE`: adds one image to the ``firmware`` property
3229 of the configuration node.
3230- :term:`UBOOT_FIT_CONF_USER_LOADABLES`: adds one or more user-defined images
3231 to the ``loadables`` property of the configuration node.
3232
3233See U-Boot's documentation for details about `verified boot
3234<https://source.denx.de/u-boot/u-boot/-/blob/master/doc/uImage.FIT/verified-boot.txt>`__
3235and the `signature process
3236<https://source.denx.de/u-boot/u-boot/-/blob/master/doc/uImage.FIT/signature.txt>`__.
3237
3238See also the description of :ref:`ref-classes-kernel-fit-image` class, which this class
3239imitates.
3240
3241.. _ref-classes-uki:
3242
3243``uki``
3244=======
3245
3246The :ref:`ref-classes-uki` class provides support for `Unified Kernel Image
3247(UKI) <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__
3248format. UKIs combine kernel, :term:`Initramfs`, signatures, metadata etc to a
3249single UEFI firmware compatible binary. The class is intended to be inherited
3250by rootfs image recipes. The build configuration should also use an
3251:term:`Initramfs`, ``systemd-boot`` as boot menu provider and have UEFI support
3252on target hardware. Using ``systemd`` as init is recommended. Image builds
3253should create an ESP partition for UEFI firmware and copy ``systemd-boot`` and
3254UKI files there. Sample configuration for Wic images is provided in
3255:oe_git:`scripts/lib/wic/canned-wks/efi-uki-bootdisk.wks.in
3256</openembedded-core/tree/scripts/lib/wic/canned-wks/efi-uki-bootdisk.wks.in>`.
3257UKIs are generated using ``systemd`` reference implementation `ukify
3258<https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__.
3259This class uses a number of variables but tries to find sensible defaults for
3260them.
3261
3262The variables used by this class are:
3263
3264- :term:`EFI_ARCH`: architecture name within EFI standard, set in
3265 :oe_git:`meta/conf/image-uefi.conf
3266 </openembedded-core/tree/meta/conf/image-uefi.conf>`
3267- :term:`IMAGE_EFI_BOOT_FILES`: files to install to EFI boot partition
3268 created by the ``bootimg_efi`` Wic plugin
3269- :term:`INITRAMFS_IMAGE`: initramfs recipe name
3270- :term:`KERNEL_DEVICETREE`: optional devicetree files to embed into UKI
3271- :term:`UKIFY_CMD`: `ukify
3272 <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__
3273 command to build the UKI image
3274- :term:`UKI_CMDLINE`: kernel command line to use with UKI
3275- :term:`UKI_CONFIG_FILE`: optional config file for `ukify
3276 <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__
3277- :term:`UKI_FILENAME`: output file name for the UKI image
3278- :term:`UKI_KERNEL_FILENAME`: kernel image file name
3279- :term:`UKI_SB_CERT`: optional UEFI secureboot certificate matching the
3280 private key
3281- :term:`UKI_SB_KEY`: optional UEFI secureboot private key to sign UKI with
3282
3283For examples on how to use this class see oeqa selftest
3284:oe_git:`meta/lib/oeqa/selftest/cases/uki.py
3285</openembedded-core/tree/meta/lib/oeqa/selftest/cases/uki.py>`.
3286Also an oeqa runtime test :oe_git:`meta/lib/oeqa/runtime/cases/uki.py
3287</openembedded-core/tree/meta/lib/oeqa/runtime/cases/uki.py>` is provided which
3288verifies that the target system booted the same UKI binary as was set at
3289buildtime via :term:`UKI_FILENAME`.
3290
2747.. _ref-classes-uninative: 3291.. _ref-classes-uninative:
2748 3292
2749``uninative.bbclass`` 3293``uninative``
2750===================== 3294=============
2751 3295
2752Attempts to isolate the build system from the host distribution's C 3296Attempts to isolate the build system from the host distribution's C
2753library in order to make re-use of native shared state artifacts across 3297library in order to make re-use of native shared state artifacts across
@@ -2762,21 +3306,21 @@ yourself, publish the resulting tarball (e.g. via HTTP) and set
2762``UNINATIVE_URL`` and ``UNINATIVE_CHECKSUM`` appropriately. For an 3306``UNINATIVE_URL`` and ``UNINATIVE_CHECKSUM`` appropriately. For an
2763example, see the ``meta/conf/distro/include/yocto-uninative.inc``. 3307example, see the ``meta/conf/distro/include/yocto-uninative.inc``.
2764 3308
2765The ``uninative`` class is also used unconditionally by the extensible 3309The :ref:`ref-classes-uninative` class is also used unconditionally by the extensible
2766SDK. When building the extensible SDK, ``uninative-tarball`` is built 3310SDK. When building the extensible SDK, ``uninative-tarball`` is built
2767and the resulting tarball is included within the SDK. 3311and the resulting tarball is included within the SDK.
2768 3312
2769.. _ref-classes-update-alternatives: 3313.. _ref-classes-update-alternatives:
2770 3314
2771``update-alternatives.bbclass`` 3315``update-alternatives``
2772=============================== 3316=======================
2773 3317
2774The ``update-alternatives`` class helps the alternatives system when 3318The :ref:`ref-classes-update-alternatives` class helps the alternatives system when
2775multiple sources provide the same command. This situation occurs when 3319multiple sources provide the same command. This situation occurs when
2776several programs that have the same or similar function are installed 3320several programs that have the same or similar function are installed
2777with the same name. For example, the ``ar`` command is available from 3321with the same name. For example, the ``ar`` command is available from
2778the ``busybox``, ``binutils`` and ``elfutils`` packages. The 3322the ``busybox``, ``binutils`` and ``elfutils`` packages. The
2779``update-alternatives`` class handles renaming the binaries so that 3323:ref:`ref-classes-update-alternatives` class handles renaming the binaries so that
2780multiple packages can be installed without conflicts. The ``ar`` command 3324multiple packages can be installed without conflicts. The ``ar`` command
2781still works regardless of which packages are installed or subsequently 3325still works regardless of which packages are installed or subsequently
2782removed. The class renames the conflicting binary in each package and 3326removed. The class renames the conflicting binary in each package and
@@ -2796,7 +3340,7 @@ To use this class, you need to define a number of variables:
2796These variables list alternative commands needed by a package, provide 3340These variables list alternative commands needed by a package, provide
2797pathnames for links, default links for targets, and so forth. For 3341pathnames for links, default links for targets, and so forth. For
2798details on how to use this class, see the comments in the 3342details on how to use this class, see the comments in the
2799:yocto_git:`update-alternatives.bbclass </poky/tree/meta/classes/update-alternatives.bbclass>` 3343:yocto_git:`update-alternatives.bbclass </poky/tree/meta/classes-recipe/update-alternatives.bbclass>`
2800file. 3344file.
2801 3345
2802.. note:: 3346.. note::
@@ -2806,43 +3350,42 @@ file.
2806 3350
2807.. _ref-classes-update-rc.d: 3351.. _ref-classes-update-rc.d:
2808 3352
2809``update-rc.d.bbclass`` 3353``update-rc.d``
2810======================= 3354===============
2811 3355
2812The ``update-rc.d`` class uses ``update-rc.d`` to safely install an 3356The :ref:`ref-classes-update-rc.d` class uses ``update-rc.d`` to safely install an
2813initialization script on behalf of the package. The OpenEmbedded build 3357initialization script on behalf of the package. The OpenEmbedded build
2814system takes care of details such as making sure the script is stopped 3358system takes care of details such as making sure the script is stopped
2815before a package is removed and started when the package is installed. 3359before a package is removed and started when the package is installed.
2816 3360
2817Three variables control this class: ``INITSCRIPT_PACKAGES``, 3361Three variables control this class: :term:`INITSCRIPT_PACKAGES`,
2818``INITSCRIPT_NAME`` and ``INITSCRIPT_PARAMS``. See the variable links 3362:term:`INITSCRIPT_NAME` and :term:`INITSCRIPT_PARAMS`. See the variable links
2819for details. 3363for details.
2820 3364
2821.. _ref-classes-useradd: 3365.. _ref-classes-useradd:
2822 3366
2823``useradd*.bbclass`` 3367``useradd*``
2824==================== 3368============
2825 3369
2826The ``useradd*`` classes support the addition of users or groups for 3370The :ref:`useradd* <ref-classes-useradd>` classes support the addition of users or groups for
2827usage by the package on the target. For example, if you have packages 3371usage by the package on the target. For example, if you have packages
2828that contain system services that should be run under their own user or 3372that contain system services that should be run under their own user or
2829group, you can use these classes to enable creation of the user or 3373group, you can use these classes to enable creation of the user or
2830group. The ``meta-skeleton/recipes-skeleton/useradd/useradd-example.bb`` 3374group. The :oe_git:`meta-skeleton/recipes-skeleton/useradd/useradd-example.bb
3375</openembedded-core/tree/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb>`
2831recipe in the :term:`Source Directory` provides a simple 3376recipe in the :term:`Source Directory` provides a simple
2832example that shows how to add three users and groups to two packages. 3377example that shows how to add three users and groups to two packages.
2833See the ``useradd-example.bb`` recipe for more information on how to use
2834these classes.
2835 3378
2836The ``useradd_base`` class provides basic functionality for user or 3379The :ref:`useradd_base <ref-classes-useradd>` class provides basic functionality for user or
2837groups settings. 3380groups settings.
2838 3381
2839The ``useradd*`` classes support the 3382The :ref:`useradd* <ref-classes-useradd>` classes support the
2840:term:`USERADD_PACKAGES`, 3383:term:`USERADD_PACKAGES`,
2841:term:`USERADD_PARAM`, 3384:term:`USERADD_PARAM`,
2842:term:`GROUPADD_PARAM`, and 3385:term:`GROUPADD_PARAM`, and
2843:term:`GROUPMEMS_PARAM` variables. 3386:term:`GROUPMEMS_PARAM` variables.
2844 3387
2845The ``useradd-staticids`` class supports the addition of users or groups 3388The :ref:`useradd-staticids <ref-classes-useradd>` class supports the addition of users or groups
2846that have static user identification (``uid``) and group identification 3389that have static user identification (``uid``) and group identification
2847(``gid``) values. 3390(``gid``) values.
2848 3391
@@ -2858,63 +3401,105 @@ set static values, the OpenEmbedded build system looks in
2858:term:`BBPATH` for ``files/passwd`` and ``files/group`` 3401:term:`BBPATH` for ``files/passwd`` and ``files/group``
2859files for the values. 3402files for the values.
2860 3403
2861To use static ``uid`` and ``gid`` values, you need to set some 3404To use static ``uid`` and ``gid`` values, you need to set some variables. See
2862variables. See the :term:`USERADDEXTENSION`, 3405the :term:`USERADDEXTENSION`, :term:`USERADD_UID_TABLES`,
2863:term:`USERADD_UID_TABLES`, 3406:term:`USERADD_GID_TABLES`, and :term:`USERADD_ERROR_DYNAMIC` variables.
2864:term:`USERADD_GID_TABLES`, and 3407You can also see the :ref:`ref-classes-useradd` class for additional
2865:term:`USERADD_ERROR_DYNAMIC` variables. 3408information.
2866You can also see the :ref:`useradd <ref-classes-useradd>` class for
2867additional information.
2868 3409
2869.. note:: 3410.. note::
2870 3411
2871 You do not use the ``useradd-staticids`` class directly. You either enable 3412 You do not use the :ref:`useradd-staticids <ref-classes-useradd>` class directly. You either enable
2872 or disable the class by setting the ``USERADDEXTENSION`` variable. If you 3413 or disable the class by setting the :term:`USERADDEXTENSION` variable. If you
2873 enable or disable the class in a configured system, :term:`TMPDIR` might 3414 enable or disable the class in a configured system, :term:`TMPDIR` might
2874 contain incorrect ``uid`` and ``gid`` values. Deleting the ``TMPDIR`` 3415 contain incorrect ``uid`` and ``gid`` values. Deleting the :term:`TMPDIR`
2875 directory will correct this condition. 3416 directory will correct this condition.
2876 3417
2877.. _ref-classes-utility-tasks: 3418.. _ref-classes-utility-tasks:
2878 3419
2879``utility-tasks.bbclass`` 3420``utility-tasks``
2880========================= 3421=================
2881 3422
2882The ``utility-tasks`` class provides support for various "utility" type 3423The :ref:`ref-classes-utility-tasks` class provides support for various
2883tasks that are applicable to all recipes, such as 3424"utility" type tasks that are applicable to all recipes, such as
2884:ref:`ref-tasks-clean` and 3425:ref:`ref-tasks-clean` and :ref:`ref-tasks-listtasks`.
2885:ref:`ref-tasks-listtasks`.
2886 3426
2887This class is enabled by default because it is inherited by the 3427This class is enabled by default because it is inherited by the
2888:ref:`base <ref-classes-base>` class. 3428:ref:`ref-classes-base` class.
2889 3429
2890.. _ref-classes-utils: 3430.. _ref-classes-utils:
2891 3431
2892``utils.bbclass`` 3432``utils``
2893================= 3433=========
2894 3434
2895The ``utils`` class provides some useful Python functions that are 3435The :ref:`ref-classes-utils` class provides some useful Python functions that are
2896typically used in inline Python expressions (e.g. ``${@...}``). One 3436typically used in inline Python expressions (e.g. ``${@...}``). One
2897example use is for ``bb.utils.contains()``. 3437example use is for ``bb.utils.contains()``.
2898 3438
2899This class is enabled by default because it is inherited by the 3439This class is enabled by default because it is inherited by the
2900:ref:`base <ref-classes-base>` class. 3440:ref:`ref-classes-base` class.
2901 3441
2902.. _ref-classes-vala: 3442.. _ref-classes-vala:
2903 3443
2904``vala.bbclass`` 3444``vala``
2905================ 3445========
2906 3446
2907The ``vala`` class supports recipes that need to build software written 3447The :ref:`ref-classes-vala` class supports recipes that need to build software written
2908using the Vala programming language. 3448using the Vala programming language.
2909 3449
3450.. _ref-classes-vex:
3451
3452``vex``
3453========
3454
3455The :ref:`ref-classes-vex` class is used to generate metadata needed by external
3456tools to check for vulnerabilities, for example CVEs. It can be used as a
3457replacement for :ref:`ref-classes-cve-check`.
3458
3459In order to use this class, inherit the class in the ``local.conf`` file and it
3460will add the ``generate_vex`` task for every recipe::
3461
3462 INHERIT += "vex"
3463
3464If an image is built it will generate a report in :term:`DEPLOY_DIR_IMAGE` for
3465all the packages used, it will also generate a file for all recipes used in the
3466build.
3467
3468Variables use the ``CVE_CHECK`` prefix to keep compatibility with the
3469:ref:`ref-classes-cve-check` class.
3470
3471Example usage::
3472
3473 bitbake -c generate_vex openssl
3474
2910.. _ref-classes-waf: 3475.. _ref-classes-waf:
2911 3476
2912``waf.bbclass`` 3477``waf``
2913=============== 3478=======
2914 3479
2915The ``waf`` class supports recipes that need to build software that uses 3480The :ref:`ref-classes-waf` class supports recipes that need to build software that uses
2916the Waf build system. You can use the 3481the Waf build system. You can use the
2917:term:`EXTRA_OECONF` or 3482:term:`EXTRA_OECONF` or
2918:term:`PACKAGECONFIG_CONFARGS` variables 3483:term:`PACKAGECONFIG_CONFARGS` variables
2919to specify additional configuration options to be passed on the Waf 3484to specify additional configuration options to be passed on the Waf
2920command line. 3485command line.
3486
3487.. _ref-classes-yocto-check-layer:
3488
3489``yocto-check-layer``
3490=====================
3491
3492The :ref:`ref-classes-yocto-check-layer` class is used by the
3493:oe_git:`yocto-check-layer </openembedded-core/tree/scripts/yocto-check-layer>`
3494script to ensure that packages from Yocto Project Compatible layers don't skip
3495required QA checks listed in :term:`CHECKLAYER_REQUIRED_TESTS` defined by the
3496:ref:`ref-classes-insane` class.
3497
3498It adds an anonymous python function with extra processing to all recipes,
3499and globally inheriting this class with :term:`INHERIT` is not advised. Instead
3500the ``yocto-check-layer`` script should be used as it handles usage of this
3501class.
3502
3503For more information on the Yocto Project
3504Compatible layers, see the :ref:`dev-manual/layers:Making Sure Your Layer is
3505Compatible With Yocto Project` section of the Yocto Project Development Manual.
diff --git a/documentation/ref-manual/devtool-reference.rst b/documentation/ref-manual/devtool-reference.rst
index 5075f0c224..5ac567591c 100644
--- a/documentation/ref-manual/devtool-reference.rst
+++ b/documentation/ref-manual/devtool-reference.rst
@@ -22,10 +22,9 @@ Getting Help
22 22
23The ``devtool`` command line is organized similarly to Git in that it 23The ``devtool`` command line is organized similarly to Git in that it
24has a number of sub-commands for each function. You can run 24has a number of sub-commands for each function. You can run
25``devtool --help`` to see all the commands: 25``devtool --help`` to see all the commands::
26::
27 26
28 $ devtool -h 27 $ devtool --help
29 NOTE: Starting bitbake server... 28 NOTE: Starting bitbake server...
30 usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q] [--color COLOR] [-h] <subcommand> ... 29 usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q] [--color COLOR] [-h] <subcommand> ...
31 30
@@ -51,6 +50,7 @@ has a number of sub-commands for each function. You can run
51 search Search available recipes 50 search Search available recipes
52 Working on a recipe in the workspace: 51 Working on a recipe in the workspace:
53 build Build a recipe 52 build Build a recipe
53 ide-sdk Setup the SDK and configure the IDE
54 rename Rename a recipe file in the workspace 54 rename Rename a recipe file in the workspace
55 edit-recipe Edit a recipe file 55 edit-recipe Edit a recipe file
56 find-recipe Find a recipe file 56 find-recipe Find a recipe file
@@ -64,28 +64,21 @@ has a number of sub-commands for each function. You can run
64 build-image Build image including workspace recipe packages 64 build-image Build image including workspace recipe packages
65 Advanced: 65 Advanced:
66 create-workspace Set up workspace in an alternative location 66 create-workspace Set up workspace in an alternative location
67 import Import exported tar archive into workspace
68 export Export workspace into a tar archive
67 extract Extract the source for an existing recipe 69 extract Extract the source for an existing recipe
68 sync Synchronize the source tree for an existing recipe 70 sync Synchronize the source tree for an existing recipe
69 menuconfig Alter build-time configuration for a recipe 71 menuconfig Alter build-time configuration for a recipe
70 import Import exported tar archive into workspace
71 export Export workspace into a tar archive
72 other:
73 selftest-reverse Reverse value (for selftest)
74 pluginfile Print the filename of this plugin
75 bbdir Print the BBPATH directory of this plugin
76 count How many times have this plugin been registered.
77 multiloaded How many times have this plugin been initialized
78 Use devtool <subcommand> --help to get help on a specific command 72 Use devtool <subcommand> --help to get help on a specific command
79 73
80As directed in the general help output, you can 74As directed in the general help output, you can
81get more syntax on a specific command by providing the command name and 75get more syntax on a specific command by providing the command name and
82using "--help": 76using ``--help``::
83::
84 77
85 $ devtool add --help 78 $ devtool add --help
86 NOTE: Starting bitbake server... 79 NOTE: Starting bitbake server...
87 usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI] [--npm-dev] [--version VERSION] [--no-git] [--srcrev SRCREV | --autorev] [--srcbranch SRCBRANCH] [--binary] [--also-native] [--src-subdir SUBDIR] [--mirrors] 80 usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI] [--npm-dev] [--no-pypi] [--version VERSION] [--no-git] [--srcrev SRCREV | --autorev]
88 [--provides PROVIDES] 81 [--srcbranch SRCBRANCH] [--binary] [--also-native] [--src-subdir SUBDIR] [--mirrors] [--provides PROVIDES]
89 [recipename] [srctree] [fetchuri] 82 [recipename] [srctree] [fetchuri]
90 83
91 Adds a new recipe to the workspace to build a specified source tree. Can optionally fetch a remote URI and unpack it to create the source tree. 84 Adds a new recipe to the workspace to build a specified source tree. Can optionally fetch a remote URI and unpack it to create the source tree.
@@ -101,6 +94,7 @@ using "--help":
101 --no-same-dir Force build in a separate build directory 94 --no-same-dir Force build in a separate build directory
102 --fetch URI, -f URI Fetch the specified URI and extract it to create the source tree (deprecated - pass as positional argument instead) 95 --fetch URI, -f URI Fetch the specified URI and extract it to create the source tree (deprecated - pass as positional argument instead)
103 --npm-dev For npm, also fetch devDependencies 96 --npm-dev For npm, also fetch devDependencies
97 --no-pypi Do not inherit pypi class
104 --version VERSION, -V VERSION 98 --version VERSION, -V VERSION
105 Version to use within recipe (PV) 99 Version to use within recipe (PV)
106 --no-git, -g If fetching source, do not set up source tree as a git repository 100 --no-git, -g If fetching source, do not set up source tree as a git repository
@@ -128,8 +122,7 @@ common working area used across the tool.
128The following figure shows the workspace structure: 122The following figure shows the workspace structure:
129 123
130.. image:: figures/build-workspace-directory.png 124.. image:: figures/build-workspace-directory.png
131 :align: center 125 :scale: 100%
132 :scale: 70%
133 126
134.. code-block:: none 127.. code-block:: none
135 128
@@ -167,19 +160,18 @@ Adding a New Recipe to the Workspace Layer
167========================================== 160==========================================
168 161
169Use the ``devtool add`` command to add a new recipe to the workspace 162Use the ``devtool add`` command to add a new recipe to the workspace
170layer. The recipe you add should not exist - ``devtool`` creates it for 163layer. The recipe you add should not exist --- ``devtool`` creates it for
171you. The source files the recipe uses should exist in an external area. 164you. The source files the recipe uses should exist in an external area.
172 165
173The following example creates and adds a new recipe named ``jackson`` to 166The following example creates and adds a new recipe named ``jackson`` to
174a workspace layer the tool creates. The source code built by the recipes 167a workspace layer the tool creates. The source code built by the recipes
175resides in ``/home/user/sources/jackson``: 168resides in ``/home/user/sources/jackson``::
176::
177 169
178 $ devtool add jackson /home/user/sources/jackson 170 $ devtool add jackson /home/user/sources/jackson
179 171
180If you add a recipe and the workspace layer does not exist, the command 172If you add a recipe and the workspace layer does not exist, the command
181creates the layer and populates it as described in "`The Workspace Layer 173creates the layer and populates it as described in
182Structure <#devtool-the-workspace-layer-structure>`__" section. 174":ref:`devtool-the-workspace-layer-structure`" section.
183 175
184Running ``devtool add`` when the workspace layer exists causes the tool 176Running ``devtool add`` when the workspace layer exists causes the tool
185to add the recipe, append files, and source files into the existing 177to add the recipe, append files, and source files into the existing
@@ -201,8 +193,7 @@ unpacking files from a remote URI. In some cases, you might want to
201specify a source revision by branch, tag, or commit hash. You can 193specify a source revision by branch, tag, or commit hash. You can
202specify these options when using the ``devtool add`` command: 194specify these options when using the ``devtool add`` command:
203 195
204- To specify a source branch, use the ``--srcbranch`` option: 196- To specify a source branch, use the ``--srcbranch`` option::
205 ::
206 197
207 $ devtool add --srcbranch &DISTRO_NAME_NO_CAP; jackson /home/user/sources/jackson 198 $ devtool add --srcbranch &DISTRO_NAME_NO_CAP; jackson /home/user/sources/jackson
208 199
@@ -210,8 +201,7 @@ specify these options when using the ``devtool add`` command:
210 branch. 201 branch.
211 202
212- To specify a specific tag or commit hash, use the ``--srcrev`` 203- To specify a specific tag or commit hash, use the ``--srcrev``
213 option: 204 option::
214 ::
215 205
216 $ devtool add --srcrev &DISTRO_REL_TAG; jackson /home/user/sources/jackson 206 $ devtool add --srcrev &DISTRO_REL_TAG; jackson /home/user/sources/jackson
217 $ devtool add --srcrev some_commit_hash /home/user/sources/jackson 207 $ devtool add --srcrev some_commit_hash /home/user/sources/jackson
@@ -269,8 +259,7 @@ The ``devtool modify`` command extracts the source for a recipe, sets it
269up as a Git repository if the source had not already been fetched from 259up as a Git repository if the source had not already been fetched from
270Git, checks out a branch for development, and applies any patches from 260Git, checks out a branch for development, and applies any patches from
271the recipe as commits on top. You can use the following command to 261the recipe as commits on top. You can use the following command to
272checkout the source files: 262checkout the source files::
273::
274 263
275 $ devtool modify recipe 264 $ devtool modify recipe
276 265
@@ -290,10 +279,7 @@ is identified using the ``EDITOR`` variable, on the specified recipe.
290When you use the ``devtool edit-recipe`` command, you must supply the 279When you use the ``devtool edit-recipe`` command, you must supply the
291root name of the recipe (i.e. no version, paths, or extensions). Also, 280root name of the recipe (i.e. no version, paths, or extensions). Also,
292the recipe file itself must reside in the workspace as a result of the 281the recipe file itself must reside in the workspace as a result of the
293``devtool add`` or ``devtool upgrade`` commands. However, you can 282``devtool add`` or ``devtool upgrade`` commands.
294override that requirement by using the "-a" or "--any-recipe" option.
295Using either of these options allows you to edit any recipe regardless
296of its location.
297 283
298.. _devtool-updating-a-recipe: 284.. _devtool-updating-a-recipe:
299 285
@@ -309,8 +295,7 @@ compile, and test the code.
309 295
310When you are satisfied with the results and you have committed your 296When you are satisfied with the results and you have committed your
311changes to the Git repository, you can then run the 297changes to the Git repository, you can then run the
312``devtool update-recipe`` to create the patches and update the recipe: 298``devtool update-recipe`` to create the patches and update the recipe::
313::
314 299
315 $ devtool update-recipe recipe 300 $ devtool update-recipe recipe
316 301
@@ -321,8 +306,7 @@ Often, you might want to apply customizations made to your software in
321your own layer rather than apply them to the original recipe. If so, you 306your own layer rather than apply them to the original recipe. If so, you
322can use the ``-a`` or ``--append`` option with the 307can use the ``-a`` or ``--append`` option with the
323``devtool update-recipe`` command. These options allow you to specify 308``devtool update-recipe`` command. These options allow you to specify
324the layer into which to write an append file: 309the layer into which to write an append file::
325::
326 310
327 $ devtool update-recipe recipe -a base-layer-directory 311 $ devtool update-recipe recipe -a base-layer-directory
328 312
@@ -339,27 +323,40 @@ Checking on the Upgrade Status of a Recipe
339Upstream recipes change over time. Consequently, you might find that you 323Upstream recipes change over time. Consequently, you might find that you
340need to determine if you can upgrade a recipe to a newer version. 324need to determine if you can upgrade a recipe to a newer version.
341 325
342To check on the upgrade status of a recipe, use the 326To check on the upgrade status of a recipe, you can use the
343``devtool check-upgrade-status`` command. The command displays a table 327``devtool latest-version recipe`` command, which quickly shows the current
344of your current recipe versions, the latest upstream versions, the email 328version and the latest version available upstream. To get a more global
345address of the recipe's maintainer, and any additional information such 329picture, use the ``devtool check-upgrade-status`` command, which takes a
346as commit hash strings and reasons you might not be able to upgrade a 330list of recipes as input, or no arguments, in which case it checks all
347particular recipe. 331available recipes. This command will only print the recipes for which
332a new upstream version is available. Each such recipe will have its current
333version and latest upstream version, as well as the email of the maintainer
334and any additional information such as the commit hash or reason for not
335being able to upgrade it, displayed in a table.
336
337This upgrade checking mechanism relies on the optional :term:`UPSTREAM_CHECK_URI`,
338:term:`UPSTREAM_CHECK_REGEX`, :term:`UPSTREAM_CHECK_GITTAGREGEX`,
339:term:`UPSTREAM_CHECK_COMMITS` and :term:`UPSTREAM_VERSION_UNKNOWN`
340variables in package recipes.
348 341
349.. note:: 342.. note::
350 343
344 - Most of the time, the above variables are unnecessary. They are only
345 required when upstream does something unusual, and default
346 mechanisms cannot find the new upstream versions.
347
351 - For the ``oe-core`` layer, recipe maintainers come from the 348 - For the ``oe-core`` layer, recipe maintainers come from the
352 :yocto_git:`maintainers.inc </poky/tree/meta/conf/distro/include/maintainers.inc>` 349 :yocto_git:`maintainers.inc </poky/tree/meta/conf/distro/include/maintainers.inc>`
353 file. 350 file.
354 351
355 - If the recipe is using the :ref:`bitbake:bitbake-user-manual/bitbake-user-manual-fetching:git fetcher (\`\`git://\`\`)` 352 - If the recipe is using the :ref:`bitbake-user-manual/bitbake-user-manual-fetching:git fetcher (\`\`git://\`\`)`
356 rather than a 353 rather than a tarball, the commit hash points to the commit that matches
357 tarball, the commit hash points to the commit that matches the 354 the recipe's latest version tag, or in the absence of suitable tags,
358 recipe's latest version tag. 355 to the latest commit (when :term:`UPSTREAM_CHECK_COMMITS` set to ``1``
356 in the recipe).
359 357
360As with all ``devtool`` commands, you can get help on the individual 358As with all ``devtool`` commands, you can get help on the individual
361command: 359command::
362::
363 360
364 $ devtool check-upgrade-status -h 361 $ devtool check-upgrade-status -h
365 NOTE: Starting bitbake server... 362 NOTE: Starting bitbake server...
@@ -377,33 +374,30 @@ command:
377Unless you provide a specific recipe name on the command line, the 374Unless you provide a specific recipe name on the command line, the
378command checks all recipes in all configured layers. 375command checks all recipes in all configured layers.
379 376
380Following is a partial example table that reports on all the recipes. 377Here is a partial example table that reports on all the recipes::
378
379 $ devtool check-upgrade-status
380 ...
381 INFO: bind 9.16.20 9.16.21 Armin Kuster <akuster808@gmail.com>
382 INFO: inetutils 2.1 2.2 Tom Rini <trini@konsulko.com>
383 INFO: iproute2 5.13.0 5.14.0 Changhyeok Bae <changhyeok.bae@gmail.com>
384 INFO: openssl 1.1.1l 3.0.0 Alexander Kanavin <alex.kanavin@gmail.com>
385 INFO: base-passwd 3.5.29 3.5.51 Anuj Mittal <anuj.mittal@intel.com> cannot be updated due to: Version 3.5.38 requires cdebconf for update-passwd utility
386 ...
387
381Notice the reported reason for not upgrading the ``base-passwd`` recipe. 388Notice the reported reason for not upgrading the ``base-passwd`` recipe.
382In this example, while a new version is available upstream, you do not 389In this example, while a new version is available upstream, you do not
383want to use it because the dependency on ``cdebconf`` is not easily 390want to use it because the dependency on ``cdebconf`` is not easily
384satisfied. 391satisfied. Maintainers can explicit the reason that is shown by adding
392the :term:`RECIPE_NO_UPDATE_REASON` variable to the corresponding recipe.
393See :yocto_git:`base-passwd.bb </poky/tree/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb?h=kirkstone>`
394for an example::
385 395
386.. note:: 396 RECIPE_NO_UPDATE_REASON = "Version 3.5.38 requires cdebconf for update-passwd utility"
387
388 When a reason for not upgrading displays, the reason is usually
389 written into the recipe using the ``RECIPE_NO_UPDATE_REASON``
390 variable. See the
391 :yocto_git:`base-passwd.bb </poky/tree/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb>`
392 recipe for an example.
393
394::
395 397
396 $ devtool check-upgrade-status 398Last but not least, you may set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1``
397 ... 399in a recipe when there's currently no way to determine its latest upstream
398 NOTE: acpid 2.0.30 2.0.31 Ross Burton <ross.burton@intel.com> 400version.
399 NOTE: u-boot-fw-utils 2018.11 2019.01 Marek Vasut <marek.vasut@gmail.com> d3689267f92c5956e09cc7d1baa4700141662bff
400 NOTE: u-boot-tools 2018.11 2019.01 Marek Vasut <marek.vasut@gmail.com> d3689267f92c5956e09cc7d1baa4700141662bff
401 .
402 .
403 .
404 NOTE: base-passwd 3.5.29 3.5.45 Anuj Mittal <anuj.mittal@intel.com> cannot be updated due to: Version 3.5.38 requires cdebconf for update-passwd utility
405 NOTE: busybox 1.29.2 1.30.0 Andrej Valek <andrej.valek@siemens.com>
406 NOTE: dbus-test 1.12.10 1.12.12 Chen Qi <Qi.Chen@windriver.com>
407 401
408.. _devtool-upgrading-a-recipe: 402.. _devtool-upgrading-a-recipe:
409 403
@@ -412,8 +406,8 @@ Upgrading a Recipe
412 406
413As software matures, upstream recipes are upgraded to newer versions. As 407As software matures, upstream recipes are upgraded to newer versions. As
414a developer, you need to keep your local recipes up-to-date with the 408a developer, you need to keep your local recipes up-to-date with the
415upstream version releases. Several methods exist by which you can 409upstream version releases. There are several ways of upgrading recipes.
416upgrade recipes. You can read about them in the ":ref:`dev-manual/common-tasks:upgrading recipes`" 410You can read about them in the ":ref:`dev-manual/upgrading-recipes:upgrading recipes`"
417section of the Yocto Project Development Tasks Manual. This section 411section of the Yocto Project Development Tasks Manual. This section
418overviews the ``devtool upgrade`` command. 412overviews the ``devtool upgrade`` command.
419 413
@@ -438,10 +432,10 @@ revision to which you want to upgrade (i.e. the
438forth. 432forth.
439 433
440You can read more on the ``devtool upgrade`` workflow in the 434You can read more on the ``devtool upgrade`` workflow in the
441":ref:`sdk-manual/extensible:use \`\`devtool upgrade\`\` to create a version of the recipe that supports a newer version of the software`" 435":ref:`dev-manual/devtool:use \`\`devtool upgrade\`\` to create a version of the recipe that supports a newer version of the software`"
442section in the Yocto Project Application Development and the Extensible 436section in the Yocto Project Application Development and the Extensible
443Software Development Kit (eSDK) manual. You can also see an example of 437Software Development Kit (eSDK) manual. You can also see an example of
444how to use ``devtool upgrade`` in the ":ref:`dev-manual/common-tasks:using \`\`devtool upgrade\`\``" 438how to use ``devtool upgrade`` in the ":ref:`dev-manual/upgrading-recipes:using ``devtool upgrade```"
445section in the Yocto Project Development Tasks Manual. 439section in the Yocto Project Development Tasks Manual.
446 440
447.. _devtool-resetting-a-recipe: 441.. _devtool-resetting-a-recipe:
@@ -462,14 +456,27 @@ files have been modified, the command preserves the modified files in a
462separate "attic" subdirectory under the workspace layer. 456separate "attic" subdirectory under the workspace layer.
463 457
464Here is an example that resets the workspace directory that contains the 458Here is an example that resets the workspace directory that contains the
465``mtr`` recipe: 459``mtr`` recipe::
466::
467 460
468 $ devtool reset mtr 461 $ devtool reset mtr
469 NOTE: Cleaning sysroot for recipe mtr... 462 NOTE: Cleaning sysroot for recipe mtr...
470 NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no longer need it then please delete it manually 463 NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no longer need it then please delete it manually
471 $ 464 $
472 465
466.. _devtool-finish-working-on-a-recipe:
467
468Finish Working on a Recipe
469==========================
470
471Use the ``devtool finish`` command to push any committed changes to the
472specified recipe in the specified layer and remove it from your workspace.
473
474This is roughly equivalent to the ``devtool update-recipe`` command followed by
475the ``devtool reset`` command. The changes must have been committed to the git
476repository created by ``devtool``. Here is an example::
477
478 $ devtool finish recipe /path/to/custom/layer
479
473.. _devtool-building-your-recipe: 480.. _devtool-building-your-recipe:
474 481
475Building Your Recipe 482Building Your Recipe
@@ -481,9 +488,8 @@ Use the ``devtool build`` command to build your recipe. The
481 488
482When you use the ``devtool build`` command, you must supply the root 489When you use the ``devtool build`` command, you must supply the root
483name of the recipe (i.e. do not provide versions, paths, or extensions). 490name of the recipe (i.e. do not provide versions, paths, or extensions).
484You can use either the "-s" or the "--disable-parallel-make" options to 491You can use either the ``-s`` or the ``--disable-parallel-make`` options to
485disable parallel makes during the build. Here is an example: 492disable parallel makes during the build. Here is an example::
486::
487 493
488 $ devtool build recipe 494 $ devtool build recipe
489 495
@@ -499,8 +505,7 @@ device for testing. For proper integration into a final image, you need
499to edit your custom image recipe appropriately. 505to edit your custom image recipe appropriately.
500 506
501When you use the ``devtool build-image`` command, you must supply the 507When you use the ``devtool build-image`` command, you must supply the
502name of the image. This command has no command line options: 508name of the image. This command has no command line options::
503::
504 509
505 $ devtool build-image image 510 $ devtool build-image image
506 511
@@ -510,8 +515,7 @@ Deploying Your Software on the Target Machine
510============================================= 515=============================================
511 516
512Use the ``devtool deploy-target`` command to deploy the recipe's build 517Use the ``devtool deploy-target`` command to deploy the recipe's build
513output to the live target machine: 518output to the live target machine::
514::
515 519
516 $ devtool deploy-target recipe target 520 $ devtool deploy-target recipe target
517 521
@@ -529,8 +533,8 @@ you do, the package manager is bypassed.
529 should never use it to update an image that will be used in 533 should never use it to update an image that will be used in
530 production. 534 production.
531 535
532Some conditions exist that could prevent a deployed application from 536Some conditions could prevent a deployed application from
533behaving as expected. When both of the following conditions exist, your 537behaving as expected. When both of the following conditions are met, your
534application has the potential to not behave correctly when run on the 538application has the potential to not behave correctly when run on the
535target: 539target:
536 540
@@ -541,7 +545,7 @@ target:
541- The target does not physically have the packages on which the 545- The target does not physically have the packages on which the
542 application depends installed. 546 application depends installed.
543 547
544If both of these conditions exist, your application will not behave as 548If both of these conditions are met, your application will not behave as
545expected. The reason for this misbehavior is because the 549expected. The reason for this misbehavior is because the
546``devtool deploy-target`` command does not deploy the packages (e.g. 550``devtool deploy-target`` command does not deploy the packages (e.g.
547libraries) on which your new application depends. The assumption is that 551libraries) on which your new application depends. The assumption is that
@@ -549,6 +553,26 @@ the packages are already on the target. Consequently, when a runtime
549call is made in the application for a dependent function (e.g. a library 553call is made in the application for a dependent function (e.g. a library
550call), the function cannot be found. 554call), the function cannot be found.
551 555
556.. warning::
557
558 Runtime dependencies can be explicitly listed in the :term:`RDEPENDS`
559 variable, but may also be the result of a :term:`DEPENDS` assignment in your
560 application's recipe. This is usually the case when your application depends
561 on libraries for compilation: these libraries are listed as build-time
562 dependencies in the :term:`DEPENDS` variable in your application's recipe.
563 However these may also be runtime dependencies if they install shared objects
564 on which your application will dynamically link to at runtime (e.g. shared
565 libraries ending with ``.so``).
566
567 These runtime dependencies are automatically resolved by the
568 :term:`OpenEmbedded Build System` during the packaging phase. Since
569 ``devtool`` ignores packaging dependencies, they will not be installed
570 automatically with ``devtool deploy-target``.
571
572 For more information on how the :term:`OpenEmbedded Build System` handles
573 packaging, see the :ref:`overview-manual/concepts:Automatically Added Runtime
574 Dependencies` section of the Yocto Project Overview and Concepts Manual.
575
552To be sure you have all the dependencies local to the target, you need 576To be sure you have all the dependencies local to the target, you need
553to be sure that the packages are pre-deployed (installed) on the target 577to be sure that the packages are pre-deployed (installed) on the target
554before attempting to run your application. 578before attempting to run your application.
@@ -562,8 +586,7 @@ Use the ``devtool undeploy-target`` command to remove deployed build
562output from the target machine. For the ``devtool undeploy-target`` 586output from the target machine. For the ``devtool undeploy-target``
563command to work, you must have previously used the 587command to work, you must have previously used the
564":ref:`devtool deploy-target <ref-manual/devtool-reference:deploying your software on the target machine>`" 588":ref:`devtool deploy-target <ref-manual/devtool-reference:deploying your software on the target machine>`"
565command. 589command::
566::
567 590
568 $ devtool undeploy-target recipe target 591 $ devtool undeploy-target recipe target
569 592
@@ -582,15 +605,13 @@ new workspace layer, it is populated with the ``README`` file and the
582``conf`` directory only. 605``conf`` directory only.
583 606
584The following example creates a new workspace layer in your current 607The following example creates a new workspace layer in your current
585working and by default names the workspace layer "workspace": 608working and by default names the workspace layer "workspace"::
586::
587 609
588 $ devtool create-workspace 610 $ devtool create-workspace
589 611
590You can create a workspace layer anywhere by supplying a pathname with 612You can create a workspace layer anywhere by supplying a pathname with
591the command. The following command creates a new workspace layer named 613the command. The following command creates a new workspace layer named
592"new-workspace": 614"new-workspace"::
593::
594 615
595 $ devtool create-workspace /home/scottrif/new-workspace 616 $ devtool create-workspace /home/scottrif/new-workspace
596 617
@@ -603,15 +624,13 @@ Use the ``devtool status`` command to list the recipes currently in your
603workspace. Information includes the paths to their respective external 624workspace. Information includes the paths to their respective external
604source trees. 625source trees.
605 626
606The ``devtool status`` command has no command-line options: 627The ``devtool status`` command has no command-line options::
607::
608 628
609 $ devtool status 629 $ devtool status
610 630
611Following is sample output after using 631Here is sample output after using
612:ref:`devtool add <ref-manual/devtool-reference:adding a new recipe to the workspace layer>` 632:ref:`devtool add <ref-manual/devtool-reference:adding a new recipe to the workspace layer>`
613to create and add the ``mtr_0.86.bb`` recipe to the ``workspace`` directory: 633to create and add the ``mtr_0.86.bb`` recipe to the ``workspace`` directory::
614::
615 634
616 $ devtool status 635 $ devtool status
617 mtr:/home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb) 636 mtr:/home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb)
@@ -629,3 +648,43 @@ a match.
629 648
630When you use the ``devtool search`` command, you must supply a keyword. 649When you use the ``devtool search`` command, you must supply a keyword.
631The command uses the keyword when searching for a match. 650The command uses the keyword when searching for a match.
651
652Alternatively, the ``devtool find-recipe`` command can be used to search for
653recipe files instead of recipe names. Likewise, you must supply a keyword.
654
655.. _devtool-get-the-configure-script-help:
656
657Get Information on Recipe Configuration Scripts
658===============================================
659
660Use the ``devtool configure-help`` command to get help on the configuration
661script options for a given recipe. You must supply the recipe name to the
662command. For example, it shows the output of ``./configure --help`` for
663:ref:`autotools <ref-classes-autotools>`-based recipes.
664
665The ``configure-help`` command will also display the configuration options
666currently in use, including the ones passed through the :term:`EXTRA_OECONF`
667variable.
668
669.. _devtool-generate-an-ide-configuration-for-a-recipe:
670
671Generate an IDE Configuration for a Recipe
672==========================================
673
674The ``devtool ide-sdk`` automatically creates an IDE configuration and SDK to
675work on a given recipe. Depending on the ``--mode`` parameter, different types
676of SDKs are generated:
677
678- ``modified`` mode: this creates an SDK and generates an IDE configuration in
679 the workspace directory.
680
681- ``shared`` mode: this creates a cross-compiling toolchain and the
682 corresponding shared sysroot directories of the supplied recipe(s).
683
684The ``--target`` option can be used to specify a ``username@hostname`` string
685and create a remote debugging configuration for the recipe. Similarly to
686``devtool deploy-target``, it requires an SSH server running on the target.
687
688For further details on the ``devtool ide-sdk`` command, see the
689":doc:`/sdk-manual/extensible`" chapter in the Yocto Project Application
690Development and the Extensible Software Development Kit (eSDK) manual.
diff --git a/documentation/ref-manual/examples/hello-autotools/hello_2.10.bb b/documentation/ref-manual/examples/hello-autotools/hello_2.10.bb
deleted file mode 100644
index aa2beb9a9b..0000000000
--- a/documentation/ref-manual/examples/hello-autotools/hello_2.10.bb
+++ /dev/null
@@ -1,9 +0,0 @@
1DESCRIPTION = "GNU Helloworld application"
2SECTION = "examples"
3LICENSE = "GPLv3"
4LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
5
6SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz"
7SRC_URI[sha256sum] = "31e066137a962676e89f69d1b65382de95a7ef7d914b8cb956f41ea72e0f516b"
8
9inherit autotools-brokensep gettext
diff --git a/documentation/ref-manual/examples/hello-single/files/helloworld.c b/documentation/ref-manual/examples/hello-single/files/helloworld.c
deleted file mode 100644
index fc7169b7b8..0000000000
--- a/documentation/ref-manual/examples/hello-single/files/helloworld.c
+++ /dev/null
@@ -1,8 +0,0 @@
1#include <stdio.h>
2
3int main(void)
4{
5 printf("Hello world!\n");
6
7 return 0;
8}
diff --git a/documentation/ref-manual/examples/hello-single/hello.bb b/documentation/ref-manual/examples/hello-single/hello.bb
deleted file mode 100644
index 90d3aefd86..0000000000
--- a/documentation/ref-manual/examples/hello-single/hello.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1DESCRIPTION = "Simple helloworld application"
2SECTION = "examples"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
5
6SRC_URI = "file://helloworld.c"
7
8S = "${WORKDIR}"
9
10do_compile() {
11 ${CC} ${LDFLAGS} helloworld.c -o helloworld
12}
13
14do_install() {
15 install -d ${D}${bindir}
16 install -m 0755 helloworld ${D}${bindir}
17}
diff --git a/documentation/ref-manual/examples/libxpm/libxpm_3.5.6.bb b/documentation/ref-manual/examples/libxpm/libxpm_3.5.6.bb
deleted file mode 100644
index c0c8986405..0000000000
--- a/documentation/ref-manual/examples/libxpm/libxpm_3.5.6.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1require recipes-graphics/xorg-lib/xorg-lib-common.inc
2
3DESCRIPTION = "X11 Pixmap library"
4LICENSE = "X-BSD"
5LIC_FILES_CHKSUM = "file://COPYING;md5=3e07763d16963c3af12db271a31abaa5"
6DEPENDS += "libxext"
7PR = "r2"
8PE = "1"
9
10XORG_PN = "libXpm"
11
12PACKAGES =+ "sxpm cxpm"
13FILES_cxpm = "${bindir}/cxpm"
14FILES_sxpm = "${bindir}/sxpm"
diff --git a/documentation/ref-manual/examples/mtd-makefile/mtd-utils_1.0.0.bb b/documentation/ref-manual/examples/mtd-makefile/mtd-utils_1.0.0.bb
deleted file mode 100644
index 5d05a437a4..0000000000
--- a/documentation/ref-manual/examples/mtd-makefile/mtd-utils_1.0.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1DESCRIPTION = "Tools for managing memory technology devices."
2SECTION = "base"
3DEPENDS = "zlib"
4HOMEPAGE = "http://www.linux-mtd.infradead.org/"
5LICENSE = "GPLv2"
6LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
7 file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c"
8
9SRC_URI = "ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-${PV}.tar.gz"
10
11CFLAGS_prepend = "-I ${S}/include "
12
13do_install() {
14 oe_runmake install DESTDIR=${D}
15}
diff --git a/documentation/ref-manual/faq.rst b/documentation/ref-manual/faq.rst
index 34b26ee3ef..7dd37c7a5c 100644
--- a/documentation/ref-manual/faq.rst
+++ b/documentation/ref-manual/faq.rst
@@ -4,9 +4,15 @@
4FAQ 4FAQ
5*** 5***
6 6
7**Q:** How does Poky differ from :oe_home:`OpenEmbedded <>`? 7.. contents::
8 8
9**A:** The term ``Poky`` refers to the specific reference build 9General questions
10=================
11
12How does Poky differ from OpenEmbedded?
13---------------------------------------
14
15The term ``Poky`` refers to the specific reference build
10system that the Yocto Project provides. Poky is based on 16system that the Yocto Project provides. Poky is based on
11:term:`OpenEmbedded-Core (OE-Core)` and :term:`BitBake`. Thus, the 17:term:`OpenEmbedded-Core (OE-Core)` and :term:`BitBake`. Thus, the
12generic term used here for the build system is the "OpenEmbedded build 18generic term used here for the build system is the "OpenEmbedded build
@@ -15,19 +21,10 @@ OpenEmbedded, with changes always being merged to OE-Core or BitBake
15first before being pulled back into Poky. This practice benefits both 21first before being pulled back into Poky. This practice benefits both
16projects immediately. 22projects immediately.
17 23
18**Q:** My development system does not meet the required Git, tar, and 24How can you claim Poky / OpenEmbedded-Core is stable?
19Python versions. In particular, I do not have Python 3.5.0 or greater. 25-----------------------------------------------------
20Can I still use the Yocto Project?
21
22**A:** You can get the required tools on your host development system a
23couple different ways (i.e. building a tarball or downloading a
24tarball). See the
25":ref:`ref-manual/system-requirements:required git, tar, python and gcc versions`"
26section for steps on how to update your build tools.
27
28**Q:** How can you claim Poky / OpenEmbedded-Core is stable?
29 26
30**A:** There are three areas that help with stability; 27There are three areas that help with stability;
31 28
32- The Yocto Project team keeps :term:`OpenEmbedded-Core (OE-Core)` small and 29- The Yocto Project team keeps :term:`OpenEmbedded-Core (OE-Core)` small and
33 focused, containing around 830 recipes as opposed to the thousands 30 focused, containing around 830 recipes as opposed to the thousands
@@ -37,95 +34,132 @@ section for steps on how to update your build tools.
37- The Yocto Project team runs manual and automated tests using a small, 34- The Yocto Project team runs manual and automated tests using a small,
38 fixed set of reference hardware as well as emulated targets. 35 fixed set of reference hardware as well as emulated targets.
39 36
40- The Yocto Project uses an autobuilder, which provides continuous 37- The Yocto Project uses an :yocto_ab:`autobuilder <>`, which provides
41 build and integration tests. 38 continuous build and integration tests.
42 39
43**Q:** How do I get support for my board added to the Yocto Project? 40Are there any products built using the OpenEmbedded build system?
41-----------------------------------------------------------------
44 42
45**A:** Support for an additional board is added by creating a Board 43See :yocto_wiki:`Products that use the Yocto Project
46Support Package (BSP) layer for it. For more information on how to 44</Project_Users#Products_that_use_the_Yocto_Project>` in the Yocto Project
47create a BSP layer, see the 45Wiki. Don't hesitate to contribute to this page if you know other such
48":ref:`dev-manual/common-tasks:understanding and creating layers`" 46products.
49section in the Yocto Project Development Tasks Manual and the
50:doc:`/bsp-guide/index`.
51 47
52Usually, if the board is not completely exotic, adding support in the 48Why isn't systemd the default init system for OpenEmbedded-Core/Yocto Project or in Poky?
53Yocto Project is fairly straightforward. 49-----------------------------------------------------------------------------------------
54 50
55**Q:** Are there any products built using the OpenEmbedded build system? 51`systemd <https://systemd.io/>`__ is a desktop Linux init system with a specific
52focus that is not entirely aligned with a customisable "embedded" build
53system/environment.
56 54
57**A:** The software running on the `Vernier 55It understandably mandates certain layouts and configurations which may
58LabQuest <https://vernier.com/labquest/>`__ is built using the 56or may not align with what the objectives and direction :term:`OpenEmbedded-Core
59OpenEmbedded build system. See the `Vernier 57(OE-Core)` or Yocto Project want to take. It doesn't support all of our targets.
60LabQuest <https://www.vernier.com/products/interfaces/labq/>`__ website 58For example `musl <https://www.musl-libc.org/>`__ support in systemd is
61for more information. There are a number of pre-production devices using 59problematic.
62the OpenEmbedded build system and the Yocto Project team announces them
63as soon as they are released.
64 60
65**Q:** What does the OpenEmbedded build system produce as output? 61If it were our default, we would have to align with all their choices
62and this doesn't make sense. It is therefore a configuration option and
63available to anyone where the design goals align. But we are clear it
64is not the only way to handle init.
66 65
67**A:** Because you can use the same set of recipes to create output of 66Our automated testing includes it through the ``poky-altcfg`` :term:`DISTRO` and
68various formats, the output of an OpenEmbedded build depends on how you 67we don't really need it to be the default: it is tested, it works, and people
69start it. Usually, the output is a flashable image ready for the target 68can choose to use it.
70device.
71 69
72**Q:** How do I add my package to the Yocto Project? 70Building environment
71====================
73 72
74**A:** To add a package, you need to create a BitBake recipe. For 73Missing dependencies on the development system?
75information on how to create a BitBake recipe, see the 74-----------------------------------------------
76":ref:`dev-manual/common-tasks:writing a new recipe`"
77section in the Yocto Project Development Tasks Manual.
78 75
79**Q:** Do I have to reflash my entire board with a new Yocto Project 76If your development system does not meet the required Git, tar, and
80image when recompiling a package? 77Python versions, you can get the required tools on your host development
78system in different ways (i.e. building a tarball or downloading a
79tarball). See the ":ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions`"
80section for steps on how to update your build tools.
81 81
82**A:** The OpenEmbedded build system can build packages in various 82How does OpenEmbedded fetch source code? Will it work through a firewall or proxy server?
83formats such as IPK for OPKG, Debian package (``.deb``), or RPM. You can 83-----------------------------------------------------------------------------------------
84then upgrade the packages using the package tools on the device, much
85like on a desktop distribution such as Ubuntu or Fedora. However,
86package management on the target is entirely optional.
87 84
88**Q:** I see the error 85The way the build system obtains source code is highly
89'``chmod: XXXXX new permissions are r-xrwxrwx, not r-xr-xr-x``'. What is 86configurable. You can setup the build system to get source code in most
90wrong? 87environments if HTTP transport is available.
91 88
92**A:** You are probably running the build on an NTFS filesystem. Use 89When the build system searches for source code, it first tries the local
93``ext2``, ``ext3``, or ``ext4`` instead. 90download directory. If that location fails, Poky tries
91:term:`PREMIRRORS`, the upstream source, and then
92:term:`MIRRORS` in that order.
94 93
95**Q:** I see lots of 404 responses for files when the OpenEmbedded build 94Assuming your distribution is "poky", the OpenEmbedded build system uses
96system is trying to download sources. Is something wrong? 95the Yocto Project source :term:`PREMIRRORS` by default for SCM-based
96sources, upstreams for normal tarballs, and then falls back to a number
97of other mirrors including the Yocto Project source mirror if those
98fail.
97 99
98**A:** Nothing is wrong. The OpenEmbedded build system checks any 100As an example, you could add a specific server for the build system to
99configured source mirrors before downloading from the upstream sources. 101attempt before any others by adding something like the following to the
100The build system does this searching for both source archives and 102``local.conf`` configuration file::
101pre-checked out versions of SCM-managed software. These checks help in
102large installations because it can reduce load on the SCM servers
103themselves. The address above is one of the default mirrors configured
104into the build system. Consequently, if an upstream source disappears,
105the team can place sources there so builds continue to work.
106 103
107**Q:** I have machine-specific data in a package for one machine only 104 PREMIRRORS:prepend = "\
108but the package is being marked as machine-specific in all cases, how do 105 git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
109I prevent this? 106 ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
107 http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
108 https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
110 109
111**A:** Set ``SRC_URI_OVERRIDES_PACKAGE_ARCH`` = "0" in the ``.bb`` file 110These changes cause the build system to intercept Git, FTP, HTTP, and
112but make sure the package is manually marked as machine-specific for the 111HTTPS requests and direct them to the ``http://`` sources mirror. You
113case that needs it. The code that handles 112can use ``file://`` URLs to point to local directories or network shares
114``SRC_URI_OVERRIDES_PACKAGE_ARCH`` is in the 113as well.
115``meta/classes/base.bbclass`` file.
116 114
117**Q:** I'm behind a firewall and need to use a proxy server. How do I do 115Another option is to set::
118that?
119 116
120**A:** Most source fetching by the OpenEmbedded build system is done by 117 BB_NO_NETWORK = "1"
118
119This statement tells BitBake to issue an error
120instead of trying to access the Internet. This technique is useful if
121you want to ensure code builds only from local sources.
122
123Here is another technique::
124
125 BB_FETCH_PREMIRRORONLY = "1"
126
127This statement limits the build system to pulling source from the
128:term:`PREMIRRORS` only. Again, this technique is useful for reproducing
129builds.
130
131Here is yet another technique::
132
133 BB_GENERATE_MIRROR_TARBALLS = "1"
134
135This statement tells the build system to generate mirror tarballs. This
136technique is useful if you want to create a mirror server. If not,
137however, the technique can simply waste time during the build.
138
139Finally, consider an example where you are behind an HTTP-only firewall.
140You could make the following changes to the ``local.conf`` configuration
141file as long as the :term:`PREMIRRORS` server is current::
142
143 PREMIRRORS:prepend = "\
144 git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
145 ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
146 http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
147 https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
148 BB_FETCH_PREMIRRORONLY = "1"
149
150These changes would cause the build system to successfully fetch source
151over HTTP and any network accesses to anything other than the
152:term:`PREMIRRORS` would fail.
153
154Most source fetching by the OpenEmbedded build system is done by
121``wget`` and you therefore need to specify the proxy settings in a 155``wget`` and you therefore need to specify the proxy settings in a
122``.wgetrc`` file, which can be in your home directory if you are a 156``.wgetrc`` file, which can be in your home directory if you are a
123single user or can be in ``/usr/local/etc/wgetrc`` as a global user 157single user or can be in ``/usr/local/etc/wgetrc`` as a global user
124file. 158file.
125 159
126Following is the applicable code for setting various proxy types in the 160Here is the applicable code for setting various proxy types in the
127``.wgetrc`` file. By default, these settings are disabled with comments. 161``.wgetrc`` file. By default, these settings are disabled with comments.
128To use them, remove the comments: :: 162To use them, remove the comments::
129 163
130 # You can set the default proxies for Wget to use for http, https, and ftp. 164 # You can set the default proxies for Wget to use for http, https, and ftp.
131 # They will override the value in the environment. 165 # They will override the value in the environment.
@@ -136,24 +170,53 @@ To use them, remove the comments: ::
136 # If you do not want to use proxy at all, set this to off. 170 # If you do not want to use proxy at all, set this to off.
137 #use_proxy = on 171 #use_proxy = on
138 172
173The build system also accepts ``http_proxy``, ``ftp_proxy``, ``https_proxy``,
174and ``all_proxy`` set as to standard shell environment variables to redirect
175requests through proxy servers.
176
139The Yocto Project also includes a 177The Yocto Project also includes a
140``meta-poky/conf/site.conf.sample`` file that shows how to configure CVS 178``meta-poky/conf/templates/default/site.conf.sample`` file that shows
141and Git proxy servers if needed. For more information on setting up 179how to configure CVS and Git proxy servers if needed.
142various proxy types and configuring proxy servers, see the
143":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
144Wiki page.
145 180
146**Q:** What's the difference between target and target\ ``-native``? 181.. note::
147 182
148**A:** The ``*-native`` targets are designed to run on the system being 183 You can find more information on the
149used for the build. These are usually tools that are needed to assist 184 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
150the build in some way such as ``quilt-native``, which is used to apply 185 Wiki page.
151patches. The non-native version is the one that runs on the target 186
152device. 187Using the OpenEmbedded Build system
188===================================
189
190How do I use an external toolchain?
191-----------------------------------
192
193See the ":ref:`dev-manual/external-toolchain:optionally using an external toolchain`"
194section in the Development Task manual.
195
196Why do I get chmod permission issues?
197-------------------------------------
153 198
154**Q:** I'm seeing random build failures. Help?! 199If you see the error
200``chmod: XXXXX new permissions are r-xrwxrwx, not r-xr-xr-x``,
201you are probably running the build on an NTFS filesystem. Instead,
202run the build system on a partition with a modern Linux filesystem such as
203``ext4``, ``btrfs`` or ``xfs``.
155 204
156**A:** If the same build is failing in totally different and random 205I see many 404 errors trying to download sources. Is anything wrong?
206--------------------------------------------------------------------
207
208Nothing is wrong. The OpenEmbedded build system checks any
209configured source mirrors before downloading from the upstream sources.
210The build system does this searching for both source archives and
211pre-checked out versions of SCM-managed software. These checks help in
212large installations because it can reduce load on the SCM servers
213themselves. This can also allow builds to continue to work if an
214upstream source disappears.
215
216Why do I get random build failures?
217-----------------------------------
218
219If the same build is failing in totally different and random
157ways, the most likely explanation is: 220ways, the most likely explanation is:
158 221
159- The hardware you are running the build on has some problem. 222- The hardware you are running the build on has some problem.
@@ -166,222 +229,158 @@ causes lots of network, disk and CPU activity and is sensitive to even
166single-bit failures in any of these areas. True random failures have 229single-bit failures in any of these areas. True random failures have
167always been traced back to hardware or virtualization issues. 230always been traced back to hardware or virtualization issues.
168 231
169**Q:** When I try to build a native recipe, the build fails with 232Why does the build fail with ``iconv.h`` problems?
170``iconv.h`` problems. 233--------------------------------------------------
171 234
172**A:** If you get an error message that indicates GNU ``libiconv`` is 235When you try to build a native recipe, you may get an error message that
173not in use but ``iconv.h`` has been included from ``libiconv``, you need 236indicates that GNU ``libiconv`` is not in use but ``iconv.h`` has been
174to check to see if you have a previously installed version of the header 237included from ``libiconv``::
175file in ``/usr/local/include``.
176::
177 238
178 #error GNU libiconv not in use but included iconv.h is from libiconv 239 #error GNU libiconv not in use but included iconv.h is from libiconv
179 240
180If you find a previously installed 241When this happens, you need to check whether you have a previously
181file, you should either uninstall it or temporarily rename it and try 242installed version of the header file in ``/usr/local/include/``.
182the build again. 243If that's the case, you should either uninstall it or temporarily rename
244it and try the build again.
183 245
184This issue is just a single manifestation of "system leakage" issues 246This issue is just a single manifestation of "system leakage" issues
185caused when the OpenEmbedded build system finds and uses previously 247caused when the OpenEmbedded build system finds and uses previously
186installed files during a native build. This type of issue might not be 248installed files during a native build. This type of issue might not be
187limited to ``iconv.h``. Be sure that leakage cannot occur from 249limited to ``iconv.h``. Make sure that leakage cannot occur from
188``/usr/local/include`` and ``/opt`` locations. 250``/usr/local/include`` and ``/opt`` locations.
189 251
190**Q:** What do we need to ship for license compliance? 252Why don't other recipes find the files provided by my ``*-native`` recipe?
191 253--------------------------------------------------------------------------
192**A:** This is a difficult question and you need to consult your lawyer
193for the answer for your specific case. It is worth bearing in mind that
194for GPL compliance, there needs to be enough information shipped to
195allow someone else to rebuild and produce the same end result you are
196shipping. This means sharing the source code, any patches applied to it,
197and also any configuration information about how that package was
198configured and built.
199
200You can find more information on licensing in the
201":ref:`overview-manual/development-environment:licensing`"
202section in the Yocto
203Project Overview and Concepts Manual and also in the
204":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`"
205section in the Yocto Project Development Tasks Manual.
206
207**Q:** How do I disable the cursor on my touchscreen device?
208
209**A:** You need to create a form factor file as described in the
210":ref:`bsp-guide/bsp:miscellaneous bsp-specific recipe files`" section in
211the Yocto Project Board Support Packages (BSP) Developer's Guide. Set
212the ``HAVE_TOUCHSCREEN`` variable equal to one as follows:
213::
214
215 HAVE_TOUCHSCREEN=1
216
217**Q:** How do I make sure connected network interfaces are brought up by
218default?
219 254
220**A:** The default interfaces file provided by the netbase recipe does 255Files provided by your native recipe could be missing from the native
221not automatically bring up network interfaces. Therefore, you will need 256sysroot, your recipe could also be installing to the wrong place, or you
222to add a BSP-specific netbase that includes an interfaces file. See the 257could be getting permission errors during the :ref:`ref-tasks-install`
223":ref:`bsp-guide/bsp:miscellaneous bsp-specific recipe files`" section in 258task in your recipe.
224the Yocto Project Board Support Packages (BSP) Developer's Guide for
225information on creating these types of miscellaneous recipe files.
226
227For example, add the following files to your layer: ::
228 259
229 meta-MACHINE/recipes-bsp/netbase/netbase/MACHINE/interfaces 260This situation happens when the build system used by a package does not
230 meta-MACHINE/recipes-bsp/netbase/netbase_5.0.bbappend 261recognize the environment variables supplied to it by :term:`BitBake`. The
231 262incident that prompted this FAQ entry involved a Makefile that used an
232**Q:** How do I create images with more free space? 263environment variable named ``BINDIR`` instead of the more standard
233 264variable ``bindir``. The makefile's hardcoded default value of
234**A:** By default, the OpenEmbedded build system creates images that are 265"/usr/bin" worked most of the time, but not for the recipe's ``-native``
2351.3 times the size of the populated root filesystem. To affect the image 266variant. For another example, permission errors might be caused by a
236size, you need to set various configurations: 267Makefile that ignores ``DESTDIR`` or uses a different name for that
237 268environment variable. Check the build system of the package to see if
238- *Image Size:* The OpenEmbedded build system uses the 269these kinds of issues exist.
239 :term:`IMAGE_ROOTFS_SIZE` variable to define
240 the size of the image in Kbytes. The build system determines the size
241 by taking into account the initial root filesystem size before any
242 modifications such as requested size for the image and any requested
243 additional free disk space to be added to the image.
244
245- *Overhead:* Use the
246 :term:`IMAGE_OVERHEAD_FACTOR` variable
247 to define the multiplier that the build system applies to the initial
248 image size, which is 1.3 by default.
249
250- *Additional Free Space:* Use the
251 :term:`IMAGE_ROOTFS_EXTRA_SPACE`
252 variable to add additional free space to the image. The build system
253 adds this space to the image after it determines its
254 ``IMAGE_ROOTFS_SIZE``.
255
256**Q:** Why don't you support directories with spaces in the pathnames?
257
258**A:** The Yocto Project team has tried to do this before but too many
259of the tools the OpenEmbedded build system depends on, such as
260``autoconf``, break when they find spaces in pathnames. Until that
261situation changes, the team will not support spaces in pathnames.
262
263**Q:** How do I use an external toolchain?
264
265**A:** The toolchain configuration is very flexible and customizable. It
266is primarily controlled with the ``TCMODE`` variable. This variable
267controls which ``tcmode-*.inc`` file to include from the
268``meta/conf/distro/include`` directory within the :term:`Source Directory`.
269
270The default value of ``TCMODE`` is "default", which tells the
271OpenEmbedded build system to use its internally built toolchain (i.e.
272``tcmode-default.inc``). However, other patterns are accepted. In
273particular, "external-\*" refers to external toolchains. One example is
274the Sourcery G++ Toolchain. The support for this toolchain resides in
275the separate ``meta-sourcery`` layer at
276https://github.com/MentorEmbedded/meta-sourcery/.
277
278In addition to the toolchain configuration, you also need a
279corresponding toolchain recipe file. This recipe file needs to package
280up any pre-built objects in the toolchain such as ``libgcc``,
281``libstdcc++``, any locales, and ``libc``.
282
283**Q:** How does the OpenEmbedded build system obtain source code and
284will it work behind my firewall or proxy server?
285 270
286**A:** The way the build system obtains source code is highly 271Can I get rid of build output so I can start over?
287configurable. You can setup the build system to get source code in most 272--------------------------------------------------
288environments if HTTP transport is available.
289 273
290When the build system searches for source code, it first tries the local 274Yes --- you can easily do this. When you use BitBake to build an
291download directory. If that location fails, Poky tries 275image, all the build output goes into the directory created when you run
292:term:`PREMIRRORS`, the upstream source, and then 276the build environment setup script (i.e. :ref:`structure-core-script`).
293:term:`MIRRORS` in that order. 277By default, this :term:`Build Directory` is named ``build`` but can be named
278anything you want.
294 279
295Assuming your distribution is "poky", the OpenEmbedded build system uses 280Within the :term:`Build Directory`, is the ``tmp`` directory. To remove all the
296the Yocto Project source ``PREMIRRORS`` by default for SCM-based 281build output yet preserve any source code or downloaded files from
297sources, upstreams for normal tarballs, and then falls back to a number 282previous builds, simply remove the ``tmp`` directory.
298of other mirrors including the Yocto Project source mirror if those
299fail.
300 283
301As an example, you could add a specific server for the build system to 284Why isn't there a way to append bbclass files like bbappend for recipes?
302attempt before any others by adding something like the following to the 285------------------------------------------------------------------------
303``local.conf`` configuration file: ::
304 286
305 PREMIRRORS_prepend = "\ 287The Yocto Project has consciously chosen not to implement such functionality.
306 git://.*/.* http://www.yoctoproject.org/sources/ \n \ 288Class code is designed to be shared and reused, and exposes some level of
307 ftp://.*/.* http://www.yoctoproject.org/sources/ \n \ 289configuration to its users. We want to encourage people to share these changes
308 http://.*/.* http://www.yoctoproject.org/sources/ \n \ 290so we can build the best classes.
309 https://.*/.* http://www.yoctoproject.org/sources/ \n"
310 291
311These changes cause the build system to intercept Git, FTP, HTTP, and 292If the ``append`` functionality was available for classes, our evidence and
312HTTPS requests and direct them to the ``http://`` sources mirror. You 293experience suggest that people would create their custom changes in their
313can use ``file://`` URLs to point to local directories or network shares 294layer instead of sharing and discussing the issues and/or limitations they
314as well. 295encountered. This would lead to bizarre class interactions when new layers are
296included. We therefore consciously choose to have a natural pressure to share
297class code improvements or fixes.
315 298
316Aside from the previous technique, these options also exist: 299There are also technical considerations like which recipes a class append would
317:: 300apply to and how that would fit within the layer model. These are complications
301we think we can live without!
318 302
319 BB_NO_NETWORK = "1" 303Customizing generated images
304============================
320 305
321This statement tells BitBake to issue an error 306What does the OpenEmbedded build system produce as output?
322instead of trying to access the Internet. This technique is useful if 307----------------------------------------------------------
323you want to ensure code builds only from local sources.
324 308
325Here is another technique: 309Because you can use the same set of recipes to create output of
326:: 310various formats, the output of an OpenEmbedded build depends on how you
311start it. Usually, the output is a flashable image ready for the target
312device.
327 313
328 BB_FETCH_PREMIRRORONLY = "1" 314How do I make the Yocto Project support my board?
315-------------------------------------------------
329 316
330This statement 317Support for an additional board is added by creating a Board
331limits the build system to pulling source from the ``PREMIRRORS`` only. 318Support Package (BSP) layer for it. For more information on how to
332Again, this technique is useful for reproducing builds. 319create a BSP layer, see the
320":ref:`dev-manual/layers:understanding and creating layers`"
321section in the Yocto Project Development Tasks Manual and the
322:doc:`/bsp-guide/index`.
333 323
334Here is another technique: 324Usually, if the board is not completely exotic, adding support in the
335:: 325Yocto Project is fairly straightforward.
336 326
337 BB_GENERATE_MIRROR_TARBALLS = "1" 327How do I make the Yocto Project support my package?
328---------------------------------------------------
338 329
339This 330To add a package, you need to create a BitBake recipe. For
340statement tells the build system to generate mirror tarballs. This 331information on how to create a BitBake recipe, see the
341technique is useful if you want to create a mirror server. If not, 332":ref:`dev-manual/new-recipe:writing a new recipe`"
342however, the technique can simply waste time during the build. 333section in the Yocto Project Development Tasks Manual.
343 334
344Finally, consider an example where you are behind an HTTP-only firewall. 335What do I need to ship for license compliance?
345You could make the following changes to the ``local.conf`` configuration 336----------------------------------------------
346file as long as the ``PREMIRRORS`` server is current: ::
347 337
348 PREMIRRORS_prepend = "\ 338This is a difficult question and you need to consult your lawyer
349 ftp://.*/.* http://www.yoctoproject.org/sources/ \n \ 339for the answer for your specific case. It is worth bearing in mind that
350 http://.*/.* http://www.yoctoproject.org/sources/ \n \ 340for GPL compliance, there needs to be enough information shipped to
351 https://.*/.* http://www.yoctoproject.org/sources/ \n" 341allow someone else to rebuild and produce the same end result you are
352 BB_FETCH_PREMIRRORONLY = "1" 342shipping. This means sharing the source code, any patches applied to it,
343and also any configuration information about how that package was
344configured and built.
353 345
354These changes would cause the build system to successfully fetch source 346You can find more information on licensing in the
355over HTTP and any network accesses to anything other than the 347":ref:`overview-manual/development-environment:licensing`"
356``PREMIRRORS`` would fail. 348section in the Yocto Project Overview and Concepts Manual and also in the
349":ref:`dev-manual/licenses:maintaining open source license compliance during your product's lifecycle`"
350section in the Yocto Project Development Tasks Manual.
357 351
358The build system also honors the standard shell environment variables 352Do I have to make a full reflash after recompiling one package?
359``http_proxy``, ``ftp_proxy``, ``https_proxy``, and ``all_proxy`` to 353---------------------------------------------------------------
360redirect requests through proxy servers.
361 354
362.. note:: 355The OpenEmbedded build system can build packages in various
356formats such as IPK for OPKG, Debian package (``.deb``), or RPM. You can
357then upgrade only the modified packages using the package tools on the device,
358much like on a desktop distribution such as Ubuntu or Fedora. However,
359package management on the target is entirely optional.
363 360
364 You can find more information on the 361How to prevent my package from being marked as machine specific?
365 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`" 362----------------------------------------------------------------
366 Wiki page.
367 363
368**Q:** Can I get rid of build output so I can start over? 364If you have machine-specific data in a package for one machine only
365but the package is being marked as machine-specific in all cases,
366you can set :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` = "0" in the ``.bb`` file.
367However, but make sure the package is manually marked as machine-specific for the
368case that needs it. The code that handles :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH`
369is in the ``meta/classes-global/base.bbclass`` file.
369 370
370**A:** Yes - you can easily do this. When you use BitBake to build an 371What's the difference between ``target`` and ``target-native``?
371image, all the build output goes into the directory created when you run 372---------------------------------------------------------------
372the build environment setup script (i.e.
373:ref:`structure-core-script`). By default, this :term:`Build Directory`
374is named ``build`` but can be named
375anything you want.
376 373
377Within the Build Directory, is the ``tmp`` directory. To remove all the 374The ``*-native`` targets are designed to run on the system being
378build output yet preserve any source code or downloaded files from 375used for the build. These are usually tools that are needed to assist
379previous builds, simply remove the ``tmp`` directory. 376the build in some way such as ``quilt-native``, which is used to apply
377patches. The non-native version is the one that runs on the target
378device.
380 379
381**Q:** Why do ``${bindir}`` and ``${libdir}`` have strange values for 380Why do ``${bindir}`` and ``${libdir}`` have strange values for ``-native`` recipes?
382``-native`` recipes? 381-----------------------------------------------------------------------------------
383 382
384**A:** Executables and libraries might need to be used from a directory 383Executables and libraries might need to be used from a directory
385other than the directory into which they were initially installed. 384other than the directory into which they were initially installed.
386Complicating this situation is the fact that sometimes these executables 385Complicating this situation is the fact that sometimes these executables
387and libraries are compiled with the expectation of being run from that 386and libraries are compiled with the expectation of being run from that
@@ -408,20 +407,13 @@ system of that image. Thus, the build system provides a value of
408forth. 407forth.
409 408
410Meanwhile, ``DESTDIR`` is a path within the :term:`Build Directory`. 409Meanwhile, ``DESTDIR`` is a path within the :term:`Build Directory`.
411However, when the recipe builds a 410However, when the recipe builds a native program (i.e. one that is
412native program (i.e. one that is intended to run on the build machine), 411intended to run on the build machine), that program is never installed
413that program is never installed directly to the build machine's root 412directly to the build machine's root file system. Consequently, the build
414file system. Consequently, the build system uses paths within the Build 413system uses paths within the Build Directory for ``DESTDIR``, ``bindir``
415Directory for ``DESTDIR``, ``bindir`` and related variables. To better 414and related variables. To better understand this, consider the following
416understand this, consider the following two paths where the first is 415two paths (artificially broken across lines for readability) where the
417relatively normal and the second is not: 416first is relatively normal and the second is not::
418
419.. note::
420
421 Due to these lengthy examples, the paths are artificially broken
422 across lines for readability.
423
424::
425 417
426 /home/maxtothemax/poky-bootchart2/build/tmp/work/i586-poky-linux/zlib/ 418 /home/maxtothemax/poky-bootchart2/build/tmp/work/i586-poky-linux/zlib/
427 1.2.8-r0/sysroot-destdir/usr/bin 419 1.2.8-r0/sysroot-destdir/usr/bin
@@ -430,35 +422,76 @@ relatively normal and the second is not:
430 zlib-native/1.2.8-r0/sysroot-destdir/home/maxtothemax/poky-bootchart2/ 422 zlib-native/1.2.8-r0/sysroot-destdir/home/maxtothemax/poky-bootchart2/
431 build/tmp/sysroots/x86_64-linux/usr/bin 423 build/tmp/sysroots/x86_64-linux/usr/bin
432 424
433Even if the paths look unusual, 425Even if the paths look unusual, they both are correct --- the first for
434they both are correct - the first for a target and the second for a 426a target and the second for a native recipe. These paths are a consequence
435native recipe. These paths are a consequence of the ``DESTDIR`` 427of the ``DESTDIR`` mechanism and while they appear strange, they are correct
436mechanism and while they appear strange, they are correct and in 428and in practice very effective.
437practice very effective.
438 429
439**Q:** The files provided by my ``*-native`` recipe do not appear to be 430How do I create images with more free space?
440available to other recipes. Files are missing from the native sysroot, 431--------------------------------------------
441my recipe is installing to the wrong place, or I am getting permissions
442errors during the do_install task in my recipe! What is wrong?
443 432
444**A:** This situation results when a build system does not recognize the 433By default, the OpenEmbedded build system creates images that are
445environment variables supplied to it by :term:`BitBake`. The 4341.3 times the size of the populated root filesystem. To affect the image
446incident that prompted this FAQ entry involved a Makefile that used an 435size, you need to set various configurations:
447environment variable named ``BINDIR`` instead of the more standard 436
448variable ``bindir``. The makefile's hardcoded default value of 437- *Image Size:* The OpenEmbedded build system uses the
449"/usr/bin" worked most of the time, but not for the recipe's ``-native`` 438 :term:`IMAGE_ROOTFS_SIZE` variable to define
450variant. For another example, permissions errors might be caused by a 439 the size of the image in Kbytes. The build system determines the size
451Makefile that ignores ``DESTDIR`` or uses a different name for that 440 by taking into account the initial root filesystem size before any
452environment variable. Check the the build system to see if these kinds 441 modifications such as requested size for the image and any requested
453of issues exist. 442 additional free disk space to be added to the image.
454 443
455**Q:** I'm adding a binary in a recipe but it's different in the image, what is 444- *Overhead:* Use the
456changing it? 445 :term:`IMAGE_OVERHEAD_FACTOR` variable
457 446 to define the multiplier that the build system applies to the initial
458**A:** The first most obvious change is the system stripping debug symbols from 447 image size, which is 1.3 by default.
459it. Setting :term:`INHIBIT_PACKAGE_STRIP` to stop debug symbols being stripped and/or 448
460:term:`INHIBIT_PACKAGE_DEBUG_SPLIT` to stop debug symbols being split into a separate 449- *Additional Free Space:* Use the
461file will ensure the binary is unchanged. The other less obvious thing that can 450 :term:`IMAGE_ROOTFS_EXTRA_SPACE`
462happen is prelinking of the image. This is set by default in local.conf via 451 variable to add additional free space to the image. The build system
463:term:`USER_CLASSES` which can contain 'image-prelink'. If you remove that, the 452 adds this space to the image after it determines its
464image will not be prelinked meaning the binaries would be unchanged. 453 :term:`IMAGE_ROOTFS_SIZE`.
454
455Why aren't spaces in path names supported?
456------------------------------------------
457
458The Yocto Project team has tried to do this before but too many
459of the tools the OpenEmbedded build system depends on, such as
460``autoconf``, break when they find spaces in pathnames. Until that
461situation changes, the team will not support spaces in pathnames.
462
463I'm adding a binary in a recipe. Why is it different in the image?
464------------------------------------------------------------------
465
466The first most obvious change is the system stripping debug symbols from
467it. Setting :term:`INHIBIT_PACKAGE_STRIP` to stop debug symbols being
468stripped and/or :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` to stop debug symbols
469being split into a separate file will ensure the binary is unchanged.
470
471Issues on the running system
472============================
473
474How do I disable the cursor on my touchscreen device?
475-----------------------------------------------------
476
477You need to create a form factor file as described in the
478":ref:`bsp-guide/bsp:miscellaneous bsp-specific recipe files`" section in
479the Yocto Project Board Support Packages (BSP) Developer's Guide. Set
480the ``HAVE_TOUCHSCREEN`` variable equal to one as follows::
481
482 HAVE_TOUCHSCREEN=1
483
484How to always bring up connected network interfaces?
485----------------------------------------------------
486
487The default interfaces file provided by the netbase recipe does
488not automatically bring up network interfaces. Therefore, you will need
489to add a BSP-specific netbase that includes an interfaces file. See the
490":ref:`bsp-guide/bsp:miscellaneous bsp-specific recipe files`" section in
491the Yocto Project Board Support Packages (BSP) Developer's Guide for
492information on creating these types of miscellaneous recipe files.
493
494For example, add the following files to your layer::
495
496 meta-MACHINE/recipes-bsp/netbase/netbase/MACHINE/interfaces
497 meta-MACHINE/recipes-bsp/netbase/netbase_5.0.bbappend
diff --git a/documentation/ref-manual/features.rst b/documentation/ref-manual/features.rst
index 89c06eb65f..2c074ab9c7 100644
--- a/documentation/ref-manual/features.rst
+++ b/documentation/ref-manual/features.rst
@@ -6,14 +6,14 @@ Features
6 6
7This chapter provides a reference of shipped machine and distro features 7This chapter provides a reference of shipped machine and distro features
8you can include as part of your image, a reference on image features you 8you can include as part of your image, a reference on image features you
9can select, and a reference on feature backfilling. 9can select, and a reference on :ref:`ref-features-backfill`.
10 10
11Features provide a mechanism for working out which packages should be 11Features provide a mechanism for working out which packages should be
12included in the generated images. Distributions can select which 12included in the generated images. Distributions can select which
13features they want to support through the ``DISTRO_FEATURES`` variable, 13features they want to support through the :term:`DISTRO_FEATURES` variable,
14which is set or appended to in a distribution's configuration file such 14which is set or appended to in a distribution's configuration file such
15as ``poky.conf``, ``poky-tiny.conf``, ``poky-lsb.conf`` and so forth. 15as ``poky.conf``, ``poky-tiny.conf``, ``poky-altcfg.conf`` and so forth.
16Machine features are set in the ``MACHINE_FEATURES`` variable, which is 16Machine features are set in the :term:`MACHINE_FEATURES` variable, which is
17set in the machine configuration file and specifies the hardware 17set in the machine configuration file and specifies the hardware
18features for a given machine. 18features for a given machine.
19 19
@@ -26,8 +26,7 @@ One method you can use to determine which recipes are checking to see if
26a particular feature is contained or not is to ``grep`` through the 26a particular feature is contained or not is to ``grep`` through the
27:term:`Metadata` for the feature. Here is an example that 27:term:`Metadata` for the feature. Here is an example that
28discovers the recipes whose build is potentially changed based on a 28discovers the recipes whose build is potentially changed based on a
29given feature: 29given feature::
30::
31 30
32 $ cd poky 31 $ cd poky
33 $ git grep 'contains.*MACHINE_FEATURES.*feature' 32 $ git grep 'contains.*MACHINE_FEATURES.*feature'
@@ -53,8 +52,6 @@ Project metadata:
53 52
54- *alsa:* Hardware has ALSA audio drivers 53- *alsa:* Hardware has ALSA audio drivers
55 54
56- *apm:* Hardware uses APM (or APM emulation)
57
58- *bluetooth:* Hardware has integrated BT 55- *bluetooth:* Hardware has integrated BT
59 56
60- *efi:* Support for booting through EFI 57- *efi:* Support for booting through EFI
@@ -63,6 +60,8 @@ Project metadata:
63 60
64- *keyboard:* Hardware has a keyboard 61- *keyboard:* Hardware has a keyboard
65 62
63- *numa:* Hardware has non-uniform memory access
64
66- *pcbios:* Support for booting through BIOS 65- *pcbios:* Support for booting through BIOS
67 66
68- *pci:* Hardware has a PCI bus 67- *pci:* Hardware has a PCI bus
@@ -71,6 +70,8 @@ Project metadata:
71 70
72- *phone:* Mobile phone (voice) support 71- *phone:* Mobile phone (voice) support
73 72
73- *qemu-usermode:* QEMU can support user-mode emulation for this machine
74
74- *qvga:* Machine has a QVGA (320x240) display 75- *qvga:* Machine has a QVGA (320x240) display
75 76
76- *rtc:* Machine has a Real-Time Clock 77- *rtc:* Machine has a Real-Time Clock
@@ -101,7 +102,9 @@ packages, and they can go beyond simply controlling the installation of
101a package or packages. In most cases, the presence or absence of a 102a package or packages. In most cases, the presence or absence of a
102feature translates to the appropriate option supplied to the configure 103feature translates to the appropriate option supplied to the configure
103script during the :ref:`ref-tasks-configure` task for 104script during the :ref:`ref-tasks-configure` task for
104the recipes that optionally support the feature. 105the recipes that optionally support the feature. Appropriate options
106must be supplied, and enabling/disabling :term:`PACKAGECONFIG` for the
107concerned packages is one way of supplying such options.
105 108
106Some distro features are also machine features. These select features 109Some distro features are also machine features. These select features
107make sense to be controlled both at the machine and distribution 110make sense to be controlled both at the machine and distribution
@@ -109,11 +112,22 @@ configuration level. See the
109:term:`COMBINED_FEATURES` variable for more 112:term:`COMBINED_FEATURES` variable for more
110information. 113information.
111 114
115.. note::
116
117 :term:`DISTRO_FEATURES` is normally independent of kernel configuration,
118 so if a feature specified in :term:`DISTRO_FEATURES` also relies on
119 support in the kernel, you will also need to ensure that support is
120 enabled in the kernel configuration.
121
112This list only represents features as shipped with the Yocto Project 122This list only represents features as shipped with the Yocto Project
113metadata: 123metadata, as extra layers can define their own:
124
125- *3g:* Include support for cellular data.
114 126
115- *alsa:* Include ALSA support (OSS compatibility kernel modules 127- *acl:* Include :wikipedia:`Access Control List <Access-control_list>` support.
116 installed if available). 128
129- *alsa:* Include :wikipedia:`Advanced Linux Sound Architecture <Advanced_Linux_Sound_Architecture>`
130 support (OSS compatibility kernel modules installed if available).
117 131
118- *api-documentation:* Enables generation of API documentation during 132- *api-documentation:* Enables generation of API documentation during
119 recipe builds. The resulting documentation is added to SDK tarballs 133 recipe builds. The resulting documentation is added to SDK tarballs
@@ -126,39 +140,85 @@ metadata:
126 140
127- *cramfs:* Include CramFS support. 141- *cramfs:* Include CramFS support.
128 142
143- *debuginfod:* Include support for getting ELF debugging information through
144 a :ref:`debuginfod <dev-manual/debugging:using the debuginfod server method>`
145 server.
146
129- *directfb:* Include DirectFB support. 147- *directfb:* Include DirectFB support.
130 148
131- *ext2:* Include tools for supporting for devices with internal 149- *ext2:* Include tools for supporting devices with internal
132 HDD/Microdrive for storing files (instead of Flash only devices). 150 HDD/Microdrive for storing files (instead of Flash only devices).
133 151
152- *gobject-introspection-data:* Include data to support
153 `GObject Introspection <https://gi.readthedocs.io/en/latest/>`__.
154
134- *ipsec:* Include IPSec support. 155- *ipsec:* Include IPSec support.
135 156
157- *ipv4:* Include IPv4 support.
158
136- *ipv6:* Include IPv6 support. 159- *ipv6:* Include IPv6 support.
137 160
138- *keyboard:* Include keyboard support (e.g. keymaps will be loaded 161- *keyboard:* Include keyboard support (e.g. keymaps will be loaded
139 during boot). 162 during boot).
140 163
164- *minidebuginfo:* Add minimal debug symbols :ref:`(minidebuginfo)<dev-manual/debugging:enabling minidebuginfo>`
165 to binary files containing, allowing ``coredumpctl`` and ``gdb`` to show symbolicated stack traces.
166
167- *multiarch:* Enable building applications with multiple architecture
168 support.
169
141- *ldconfig:* Include support for ldconfig and ``ld.so.conf`` on the 170- *ldconfig:* Include support for ldconfig and ``ld.so.conf`` on the
142 target. 171 target.
143 172
173- *lto:* Enable `Link-Time Optimisation <https://gcc.gnu.org/wiki/LinkTimeOptimization>`__.
174
175- *nfc:* Include support for
176 `Near Field Communication <https://en.wikipedia.org/wiki/Near-field_communication>`__.
177
144- *nfs:* Include NFS client support (for mounting NFS exports on 178- *nfs:* Include NFS client support (for mounting NFS exports on
145 device). 179 device).
146 180
181- *nls:* Include National Language Support (NLS).
182
147- *opengl:* Include the Open Graphics Library, which is a 183- *opengl:* Include the Open Graphics Library, which is a
148 cross-language, multi-platform application programming interface used 184 cross-language, multi-platform application programming interface used
149 for rendering two and three-dimensional graphics. 185 for rendering two and three-dimensional graphics.
150 186
187- *overlayfs:* Include `OverlayFS <https://docs.kernel.org/filesystems/overlayfs.html>`__
188 support.
189
190- *pam:* Include :wikipedia:`Pluggable Authentication Module (PAM) <Pluggable_authentication_module>`
191 support.
192
151- *pci:* Include PCI bus support. 193- *pci:* Include PCI bus support.
152 194
153- *pcmcia:* Include PCMCIA/CompactFlash support. 195- *pcmcia:* Include PCMCIA/CompactFlash support.
154 196
197- *pni-names:* Enable generation of persistent network interface names, i.e.
198 the system tries hard to have the same but unique names for the network
199 interfaces even after a reinstall.
200
201- *polkit:* Include :wikipedia:`Polkit <Polkit>` support.
202
155- *ppp:* Include PPP dialup support. 203- *ppp:* Include PPP dialup support.
156 204
157- *ptest:* Enables building the package tests where supported by 205- *ptest:* Enables building the package tests where supported by
158 individual recipes. For more information on package tests, see the 206 individual recipes. For more information on package tests, see the
159 ":ref:`dev-manual/common-tasks:testing packages with ptest`" section 207 ":ref:`test-manual/ptest:testing packages with ptest`" section
160 in the Yocto Project Development Tasks Manual. 208 in the Yocto Project Development Tasks Manual.
161 209
210- *pulseaudio:* Include support for
211 `PulseAudio <https://www.freedesktop.org/wiki/Software/PulseAudio/>`__.
212
213- *selinux:* Include support for
214 :wikipedia:`Security-Enhanced Linux (SELinux) <Security-Enhanced_Linux>`
215 (requires `meta-selinux <https://layers.openembedded.org/layerindex/layer/meta-selinux/>`__).
216
217- *seccomp:* Enables building applications with
218 :wikipedia:`seccomp <Seccomp>` support, to
219 allow them to strictly restrict the system calls that they are allowed
220 to invoke.
221
162- *smbfs:* Include SMB networks client support (for mounting 222- *smbfs:* Include SMB networks client support (for mounting
163 Samba/Microsoft Windows shares on device). 223 Samba/Microsoft Windows shares on device).
164 224
@@ -167,6 +227,10 @@ metadata:
167 reduced shell overhead, and other features. This ``init`` manager is 227 reduced shell overhead, and other features. This ``init`` manager is
168 used by many distributions. 228 used by many distributions.
169 229
230- *systemd-resolved:* Include support and use ``systemd-resolved`` as the
231 main DNS name resolver in ``glibc`` Name Service Switch. This is a DNS
232 resolver daemon from ``systemd``.
233
170- *usbgadget:* Include USB Gadget Device support (for USB 234- *usbgadget:* Include USB Gadget Device support (for USB
171 networking/serial/storage). 235 networking/serial/storage).
172 236
@@ -177,6 +241,11 @@ metadata:
177 directories into their respective counterparts in the ``/usr`` 241 directories into their respective counterparts in the ``/usr``
178 directory to provide better package and application compatibility. 242 directory to provide better package and application compatibility.
179 243
244- *vfat:* Include :wikipedia:`FAT filesystem <File_Allocation_Table>`
245 support.
246
247- *vulkan:* Include support for the :wikipedia:`Vulkan API <Vulkan>`.
248
180- *wayland:* Include the Wayland display server protocol and the 249- *wayland:* Include the Wayland display server protocol and the
181 library that supports it. 250 library that supports it.
182 251
@@ -184,6 +253,12 @@ metadata:
184 253
185- *x11:* Include the X server and libraries. 254- *x11:* Include the X server and libraries.
186 255
256- *xattr:* Include support for
257 :wikipedia:`extended file attributes <Extended_file_attributes>`.
258
259- *zeroconf:* Include support for
260 `zero configuration networking <https://en.wikipedia.org/wiki/Zero-configuration_networking>`__.
261
187.. _ref-features-image: 262.. _ref-features-image:
188 263
189Image Features 264Image Features
@@ -197,28 +272,41 @@ you can add several different predefined packages such as development
197utilities or packages with debug information needed to investigate 272utilities or packages with debug information needed to investigate
198application problems or profile applications. 273application problems or profile applications.
199 274
200The following image features are available for all images: 275The image features available for all images are:
276
277- *allow-empty-password:* Allows Dropbear and OpenSSH to accept
278 logins from accounts having an empty password string.
201 279
202- *allow-empty-password:* Allows Dropbear and OpenSSH to accept root 280- *allow-root-login:* Allows Dropbear and OpenSSH to accept root logins.
203 logins and logins from accounts having an empty password string.
204 281
205- *dbg-pkgs:* Installs debug symbol packages for all packages installed 282- *dbg-pkgs:* Installs debug symbol packages for all packages installed
206 in a given image. 283 in a given image.
207 284
208- *debug-tweaks:* Makes an image suitable for development (e.g. allows
209 root logins without passwords and enables post-installation logging).
210 See the 'allow-empty-password', 'empty-root-password', and
211 'post-install-logging' features in this list for additional
212 information.
213
214- *dev-pkgs:* Installs development packages (headers and extra library 285- *dev-pkgs:* Installs development packages (headers and extra library
215 links) for all packages installed in a given image. 286 links) for all packages installed in a given image.
216 287
217- *doc-pkgs:* Installs documentation packages for all packages 288- *doc-pkgs:* Installs documentation packages for all packages
218 installed in a given image. 289 installed in a given image.
219 290
220- *empty-root-password:* Sets the root password to an empty string, 291- *empty-root-password:* This feature can be used if you want to allow root
221 which allows logins with a blank password. 292 login with an empty password. If this feature is not present in
293 :term:`IMAGE_FEATURES`, a non-empty password is forced in ``/etc/passwd`` and
294 ``/etc/shadow`` if such files exist.
295
296 .. note::
297 ``empty-root-password`` doesn't set an empty root password by itself.
298 You get an initial empty root password thanks to the
299 :oe_git:`base-passwd </openembedded-core/tree/meta/recipes-core/base-passwd/>`
300 and :oe_git:`shadow </openembedded-core/tree/meta/recipes-extended/shadow/>`
301 recipes, and the presence of ``empty-root-password`` just disables the
302 mechanism which forces an non-empty password for the root user.
303
304- *lic-pkgs:* Installs license packages for all packages installed in a
305 given image.
306
307- *overlayfs-etc:* Configures the ``/etc`` directory to be in ``overlayfs``.
308 This allows to store device specific information elsewhere, especially
309 if the root filesystem is configured to be read-only.
222 310
223- *package-management:* Installs package management tools and preserves 311- *package-management:* Installs package management tools and preserves
224 the package manager database. 312 the package manager database.
@@ -229,30 +317,48 @@ The following image features are available for all images:
229 317
230 .. note:: 318 .. note::
231 319
232 To make the ``/var/log`` directory on the target persistent, use the 320 To make the ``/var/log`` directory on the target persistent, remove the
233 :term:`VOLATILE_LOG_DIR` variable by setting it to "no". 321 ``files/fs-perms-volatile-log.txt`` value from
322 :term:`FILESYSTEM_PERMS_TABLES`.
234 323
235- *ptest-pkgs:* Installs ptest packages for all ptest-enabled recipes. 324- *ptest-pkgs:* Installs ptest packages for all ptest-enabled recipes.
236 325
237- *read-only-rootfs:* Creates an image whose root filesystem is 326- *read-only-rootfs:* Creates an image whose root filesystem is
238 read-only. See the 327 read-only. See the
239 ":ref:`dev-manual/common-tasks:creating a read-only root filesystem`" 328 ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`"
240 section in the Yocto Project Development Tasks Manual for more 329 section in the Yocto Project Development Tasks Manual for more
241 information. 330 information.
242 331
332- *read-only-rootfs-delayed-postinsts:* when specified in conjunction
333 with ``read-only-rootfs``, specifies that post-install scripts are
334 still permitted (this assumes that the root filesystem will be made
335 writeable for the first boot; this feature does not do anything to
336 ensure that - it just disables the check for post-install scripts.)
337
338- *serial-autologin-root:* when specified in conjunction with
339 ``empty-root-password`` will automatically login as root on the
340 serial console. This of course opens up a security hole if the
341 serial console is potentially accessible to an attacker, so use
342 with caution.
343
243- *splash:* Enables showing a splash screen during boot. By default, 344- *splash:* Enables showing a splash screen during boot. By default,
244 this screen is provided by ``psplash``, which does allow 345 this screen is provided by ``psplash``, which does allow
245 customization. If you prefer to use an alternative splash screen 346 customization. If you prefer to use an alternative splash screen
246 package, you can do so by setting the ``SPLASH`` variable to a 347 package, you can do so by setting the :term:`SPLASH` variable to a
247 different package name (or names) within the image recipe or at the 348 different package name (or names) within the image recipe or at the
248 distro configuration level. 349 distro configuration level.
249 350
351- *stateless-rootfs:*: specifies that the image should be created as
352 stateless - when using ``systemd``, ``systemctl-native`` will not
353 be run on the image, leaving the image for population at runtime by
354 systemd.
355
250- *staticdev-pkgs:* Installs static development packages, which are 356- *staticdev-pkgs:* Installs static development packages, which are
251 static libraries (i.e. ``*.a`` files), for all packages installed in 357 static libraries (i.e. ``*.a`` files), for all packages installed in
252 a given image. 358 a given image.
253 359
254Some image features are available only when you inherit the 360Some image features are available only when you inherit the
255:ref:`core-image <ref-classes-core-image>` class. The current list of 361:ref:`ref-classes-core-image` class. The current list of
256these valid features is as follows: 362these valid features is as follows:
257 363
258- *hwcodecs:* Installs hardware acceleration codecs. 364- *hwcodecs:* Installs hardware acceleration codecs.
@@ -265,15 +371,30 @@ these valid features is as follows:
265 371
266- *ssh-server-dropbear:* Installs the Dropbear minimal SSH server. 372- *ssh-server-dropbear:* Installs the Dropbear minimal SSH server.
267 373
374 .. note::
375
376 As of the 4.1 release, the ``ssh-server-dropbear`` feature also
377 recommends the ``openssh-sftp-server`` package, which by default
378 will be pulled into the image. This is because recent versions of
379 the OpenSSH ``scp`` client now use the SFTP protocol, and thus
380 require an SFTP server to be present to connect to. However, if
381 you wish to use the Dropbear ssh server `without` the SFTP server
382 installed, you can either remove ``ssh-server-dropbear`` from
383 ``IMAGE_FEATURES`` and add ``dropbear`` to :term:`IMAGE_INSTALL`
384 instead, or alternatively still use the feature but set
385 :term:`BAD_RECOMMENDATIONS` as follows::
386
387 BAD_RECOMMENDATIONS += "openssh-sftp-server"
388
268- *ssh-server-openssh:* Installs the OpenSSH SSH server, which is more 389- *ssh-server-openssh:* Installs the OpenSSH SSH server, which is more
269 full-featured than Dropbear. Note that if both the OpenSSH SSH server 390 full-featured than Dropbear. Note that if both the OpenSSH SSH server
270 and the Dropbear minimal SSH server are present in 391 and the Dropbear minimal SSH server are present in
271 ``IMAGE_FEATURES``, then OpenSSH will take precedence and Dropbear 392 :term:`IMAGE_FEATURES`, then OpenSSH will take precedence and Dropbear
272 will not be installed. 393 will not be installed.
273 394
274- *tools-debug:* Installs debugging tools such as ``strace`` and 395- *tools-debug:* Installs debugging tools such as ``strace`` and
275 ``gdb``. For information on GDB, see the 396 ``gdb``. For information on GDB, see the
276 ":ref:`dev-manual/common-tasks:debugging with the gnu project debugger (gdb) remotely`" section 397 ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section
277 in the Yocto Project Development Tasks Manual. For information on 398 in the Yocto Project Development Tasks Manual. For information on
278 tracing and profiling, see the :doc:`/profile-manual/index`. 399 tracing and profiling, see the :doc:`/profile-manual/index`.
279 400
@@ -282,6 +403,8 @@ these valid features is as follows:
282- *tools-testapps:* Installs device testing tools (e.g. touchscreen 403- *tools-testapps:* Installs device testing tools (e.g. touchscreen
283 debugging). 404 debugging).
284 405
406- *weston:* Installs Weston (reference Wayland environment).
407
285- *x11:* Installs the X server. 408- *x11:* Installs the X server.
286 409
287- *x11-base:* Installs the X server with a minimal environment. 410- *x11-base:* Installs the X server with a minimal environment.
@@ -293,58 +416,50 @@ these valid features is as follows:
293Feature Backfilling 416Feature Backfilling
294=================== 417===================
295 418
296Sometimes it is necessary in the OpenEmbedded build system to extend 419Sometimes it is necessary in the OpenEmbedded build system to
297:term:`MACHINE_FEATURES` or 420add new functionality to :term:`MACHINE_FEATURES` or
298:term:`DISTRO_FEATURES` to control functionality 421:term:`DISTRO_FEATURES`, but at the same time, allow existing
299that was previously enabled and not able to be disabled. For these 422distributions or machine definitions to opt out of such new
300cases, we need to add an additional feature item to appear in one of 423features, to retain the same overall level of functionality.
301these variables, but we do not want to force developers who have 424
302existing values of the variables in their configuration to add the new 425To make this possible, the OpenEmbedded build system has a mechanism to
303feature in order to retain the same overall level of functionality. 426automatically "backfill" features into existing distro or machine
304Thus, the OpenEmbedded build system has a mechanism to automatically
305"backfill" these added features into existing distro or machine
306configurations. You can see the list of features for which this is done 427configurations. You can see the list of features for which this is done
307by finding the 428by checking the :term:`DISTRO_FEATURES_BACKFILL` and
308:term:`DISTRO_FEATURES_BACKFILL` and 429:term:`MACHINE_FEATURES_BACKFILL` variables in the
309:term:`MACHINE_FEATURES_BACKFILL` 430``meta/conf/bitbake.conf`` file.
310variables in the ``meta/conf/bitbake.conf`` file. 431
311 432These two variables are paired with the
312Because such features are backfilled by default into all configurations
313as described in the previous paragraph, developers who wish to disable
314the new features need to be able to selectively prevent the backfilling
315from occurring. They can do this by adding the undesired feature or
316features to the
317:term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` 433:term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`
318or 434and :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` variables
319:term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` 435which allow distro or machine configuration maintainers to `consider` any
320variables for distro features and machine features respectively. 436added feature, and decide when they wish to keep or exclude such feature,
321 437thus preventing the backfilling from happening.
322Here are two examples to help illustrate feature backfilling: 438
323 439Here are two examples to illustrate feature backfilling:
324- *The "pulseaudio" distro feature option*: Previously, PulseAudio 440
325 support was enabled within the Qt and GStreamer frameworks. Because 441- *The "pulseaudio" distro feature option*: Previously, PulseAudio support was
326 of this, the feature is backfilled and thus enabled for all distros 442 enabled within the Qt and GStreamer frameworks. Because of this, the feature
327 through the ``DISTRO_FEATURES_BACKFILL`` variable in the 443 is now backfilled and thus enabled for all distros through the
328 ``meta/conf/bitbake.conf`` file. However, your distro needs to 444 :term:`DISTRO_FEATURES_BACKFILL` variable in the ``meta/conf/bitbake.conf``
329 disable the feature. You can disable the feature without affecting 445 file. However, if your distro needs to disable the feature, you can do so
330 other existing distro configurations that need PulseAudio support by 446 without affecting other existing distro configurations that need PulseAudio
331 adding "pulseaudio" to ``DISTRO_FEATURES_BACKFILL_CONSIDERED`` in 447 support. You do this by adding "pulseaudio" to
332 your distro's ``.conf`` file. Adding the feature to this variable 448 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` in your distro's ``.conf``
333 when it also exists in the ``DISTRO_FEATURES_BACKFILL`` variable 449 file. So, adding the feature to this variable when it also exists in the
334 prevents the build system from adding the feature to your 450 :term:`DISTRO_FEATURES_BACKFILL` variable prevents the build system from
335 configuration's ``DISTRO_FEATURES``, effectively disabling the 451 adding the feature to your configuration's :term:`DISTRO_FEATURES`,
336 feature for that particular distro. 452 effectively disabling the feature for that particular distro.
337 453
338- *The "rtc" machine feature option*: Previously, real time clock (RTC) 454- *The "rtc" machine feature option*: Previously, real time clock (RTC)
339 support was enabled for all target devices. Because of this, the 455 support was enabled for all target devices. Because of this, the
340 feature is backfilled and thus enabled for all machines through the 456 feature is backfilled and thus enabled for all machines through the
341 ``MACHINE_FEATURES_BACKFILL`` variable in the 457 :term:`MACHINE_FEATURES_BACKFILL` variable in the ``meta/conf/bitbake.conf``
342 ``meta/conf/bitbake.conf`` file. However, your target device does not 458 file. However, if your target device does not have this capability, you can
343 have this capability. You can disable RTC support for your device 459 disable RTC support for your device without affecting other machines
344 without affecting other machines that need RTC support by adding the 460 that need RTC support. You do this by adding the "rtc" feature to the
345 feature to your machine's ``MACHINE_FEATURES_BACKFILL_CONSIDERED`` 461 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` list in your machine's ``.conf``
346 list in the machine's ``.conf`` file. Adding the feature to this 462 file. So, adding the feature to this variable when it also exists in the
347 variable when it also exists in the ``MACHINE_FEATURES_BACKFILL`` 463 :term:`MACHINE_FEATURES_BACKFILL` variable prevents the build system from
348 variable prevents the build system from adding the feature to your 464 adding the feature to your configuration's :term:`MACHINE_FEATURES`,
349 configuration's ``MACHINE_FEATURES``, effectively disabling RTC 465 effectively disabling RTC support for that particular machine.
350 support for that particular machine.
diff --git a/documentation/ref-manual/fragments.rst b/documentation/ref-manual/fragments.rst
new file mode 100644
index 0000000000..520cf783ad
--- /dev/null
+++ b/documentation/ref-manual/fragments.rst
@@ -0,0 +1,250 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3*****************************
4Using Configuration Fragments
5*****************************
6
7:term:`Configuration Fragments <Configuration Fragment>` define top level build
8configuration features that can be independently enabled and disabled using
9standard tooling. Such features are made of one or several build configuration
10statements that are either contained in a fragment file, or are set indirectly
11using the :term:`Built-in Fragment` mechanism.
12
13This document provides a quick reference of the :oe_git:`bitbake-config-build
14</bitbake/tree/bin/bitbake-config-build>` tool and lists the
15:term:`Configuration Fragments <Configuration Fragment>` and :term:`Built-in
16Fragments <Built-in Fragment>` available in the :term:`OpenEmbedded Build
17System` core repositories.
18
19.. note::
20
21 For details on how to define new fragments in your build, see the
22 :doc:`/dev-manual/creating-fragments` section of the Yocto Project Development
23 Tasks Manual.
24
25``bitbake-config-build`` Quick Reference
26========================================
27
28:term:`Configuration Fragments <Configuration Fragment>` are managed with the
29:oe_git:`bitbake-config-build </bitbake/tree/bin/bitbake-config-build>`
30command-line tool, which is available after :ref:`dev-manual/start:Initializing
31the Build Environment`.
32
33The ``bitbake-config-build`` command-line tool uses sub-commands to manage
34fragments, which are detailed in the sections below. For each sub-command, the
35``--help`` flag can be passed to get more information on the sub-command.
36
37.. _ref-bitbake-config-build-list-fragments:
38
39``bitbake-config-build list-fragments``
40---------------------------------------
41
42The :ref:`ref-bitbake-config-build-list-fragments` command will list the :term:`Built-in
43Fragments <Built-in Fragment>` and :term:`Configuration Fragments <Configuration
44Fragment>` that are currently available, and will also print which fragments are
45enabled or disabled.
46
47.. _ref-bitbake-config-build-show-fragment:
48
49``bitbake-config-build show-fragment``
50--------------------------------------
51
52The :ref:`ref-bitbake-config-build-show-fragment` command is used to show the
53location and value of a fragment. For example, running ``bitbake-config-build
54show-fragment core/yocto/sstate-mirror-cdn`` will show the content of the
55:ref:`ref-fragments-core-yocto-sstate-mirror-cdn` fragment.
56
57.. _ref-bitbake-config-build-enable-fragment:
58
59``bitbake-config-build enable-fragment``
60----------------------------------------
61
62The :ref:`ref-bitbake-config-build-enable-fragment` command is used to enable a
63fragment. When a fragment is enabled, the configuration variables of this
64fragment are parsed by :term:`BitBake` and their values are available globally
65in your build.
66
67From the list obtained with the :ref:`ref-bitbake-config-build-list-fragments`
68command, you can determine which fragments can be enabled for your build.
69
70For example, the following command would enable the
71:ref:`ref-fragments-core-yocto-sstate-mirror-cdn` fragment::
72
73 bitbake-config-build enable-fragment core/yocto/sstate-mirror-cdn
74
75.. note::
76
77 Multiple fragments can be enabled at once with the same command::
78
79 bitbake-config-build enable-fragment <fragment1> <fragment2> ...
80
81:term:`Built-in fragments <Built-in Fragment>` are enabled the same way, and
82their values are defined from the command-line directly. For example, the
83following command sets the ``qemuarm64`` :term:`MACHINE` through the
84:ref:`ref-fragments-builtin-core-machine` fragment::
85
86 bitbake-config-build enable-fragment machine/qemuarm64
87
88This fragment can be overridden from the command-line by setting it to another
89value, for example::
90
91 bitbake-config-build enable-fragment machine/qemux86-64
92
93In the above example, the new value of :term:`MACHINE` is now equal to
94``qemux86-64``.
95
96When a fragment is enabled with :ref:`ref-bitbake-config-build-enable-fragment`,
97its name is automatically appended to the :term:`OE_FRAGMENTS` variable in
98:ref:`structure-build-conf-toolcfg.conf`.
99
100.. note::
101
102 It is also possible to manually remove or add fragments by modifying the
103 :term:`OE_FRAGMENTS` variable in a configuration file such as
104 :ref:`structure-build-conf-local.conf`.
105
106.. _ref-bitbake-config-build-disable-fragment:
107
108``bitbake-config-build disable-fragment``
109-----------------------------------------
110
111Any fragment enabled with the :ref:`ref-bitbake-config-build-enable-fragment`
112command can be disabled with the :ref:`ref-bitbake-config-build-disable-fragment`
113command. The list of enabled fragments can be obtained with
114:ref:`ref-bitbake-config-build-list-fragments`.
115
116For example, the following command disables the
117:ref:`ref-fragments-core-yocto-sstate-mirror-cdn` fragment::
118
119 bitbake-config-build disable-fragment core/yocto/sstate-mirror-cdn
120
121Likewise, :term:`Built-in Fragments <Built-in Fragment>` are disabled the
122same way. For example, this would disable the ``machine/qemuarm64`` fragment::
123
124 bitbake-config-build disable-fragment machine/qemuarm64
125
126.. note::
127
128 Multiple fragments can be disabled at once with the same command::
129
130 bitbake-config-build disable-fragment <fragment1> <fragment2>
131
132.. _ref-bitbake-config-build-disable-all-fragments:
133
134``bitbake-config-build disable-all-fragments``
135----------------------------------------------
136
137The :ref:`ref-bitbake-config-build-disable-all-fragments` command disables all of the
138currently enabled fragments. The list of enabled fragments can be obtained with
139:ref:`ref-bitbake-config-build-list-fragments`.
140
141This command is run without arguments::
142
143 bitbake-config-build disable-all-fragments
144
145Core Fragments
146==============
147
148Core Built-in Fragments
149-----------------------
150
151:term:`Built-in Fragments <Built-in Fragment>` are used to assign a single
152variable globally. The :term:`OpenEmbedded Build System` defines multiple
153built-in fragments that are detailed in this section.
154
155.. _ref-fragments-builtin-core-machine:
156
157``machine/``
158~~~~~~~~~~~~
159
160The ``machine/`` :term:`built-in fragment` can be used to assign the value of
161the :term:`MACHINE` variable globally.
162
163.. _ref-fragments-builtin-core-distro:
164
165``distro/``
166~~~~~~~~~~~
167
168The ``distro/`` :term:`built-in fragment` can be used to assign the value of
169the :term:`DISTRO` variable globally.
170
171Core Configuration Fragments
172----------------------------
173
174Yocto Project Fragments
175~~~~~~~~~~~~~~~~~~~~~~~
176
177This group defines fragments related to the Yocto Project infrastructure in
178general.
179
180.. _ref-fragments-core-yocto-sstate-mirror-cdn:
181
182``core/yocto/sstate-mirror-cdn``
183^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
184
185The ``core/yocto/sstate-mirror-cdn`` :term:`configuration fragment` can be used
186to set up :term:`BB_HASHSERVE_UPSTREAM` and :term:`SSTATE_MIRRORS` to use
187pre-built :ref:`shared state cache <overview-manual/concepts:shared state
188cache>` artifacts for standard Yocto build configurations.
189
190This will mean the build will query the Yocto Project mirrors to check for
191artifacts at the start of builds, which does slow it down initially but it will
192then speed up the builds by not having to build things if they are present in
193the cache. It assumes you can download something faster than you can build it
194which will depend on your network configuration.
195
196Yocto Project Autobuilder Fragments
197~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
198
199This group defines fragment used for the Yocto Project Autobuilder. For details,
200see the :ref:`test-manual/intro:Yocto Project Autobuilder Overview` section of
201the Yocto Project Test Environment Manual.
202
203.. _ref-fragment-core-yocto-autobuilder-autobuilder:
204
205``core/yocto-autobuilder/autobuilder``
206^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
207
208The ``core/yocto-autobuilder/autobuilder`` fragment defines common variables
209used in builds started by the Yocto Project Autobuilder.
210
211.. _ref-fragment-core-yocto-autobuilder-autobuilder-resource-constraints:
212
213``core/yocto-autobuilder/autobuilder-resource-constraints``
214^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
215
216The ``core/yocto-autobuilder/autobuilder`` fragment defines variables for
217limiting the resources used by the Yocto Project Autobuilder during builds. For
218more details on how to limit resources, see the :doc:`/dev-manual/limiting-resources`
219section of the Yocto Project Development Tasks Manual.
220
221.. _ref-fragment-core-yocto-autobuilder-multilib-mips64-n32:
222
223``core/yocto-autobuilder/multilib-mips64-n32``
224^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
225
226The ``core/yocto-autobuilder/multilib-mips64-n32`` fragment enables
227tri-architecture :ref:`multilib <dev-manual/libraries:Combining Multiple
228Versions of Library Files into One Image>` configurations for :wikipedia:`MIPS64
229<MIPS_architecture>` machines, which includes ``mips64-n32``, ``mips64``, and
230``mips32r2``.
231
232.. _ref-fragment-core-yocto-autobuilder-multilib-x86-lib32:
233
234``core/yocto-autobuilder/multilib-x86-lib32``
235^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
236
237The ``core/yocto-autobuilder/multilib-x86-lib32`` fragment enables
238:ref:`multilib <dev-manual/libraries:Combining Multiple Versions of Library
239Files into One Image>` configurations for supporting 32-bit libraries on 64-bit
240:wikipedia:`X86 <X86>` builds.
241
242.. _ref-fragment-core-yocto-autobuilder-multilib-x86-lib64:
243
244``core/yocto-autobuilder/multilib-x86-lib64``
245^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
246
247The ``core/yocto-autobuilder/multilib-x86-lib64`` fragment enables
248:ref:`multilib <dev-manual/libraries:Combining Multiple Versions of Library
249Files into One Image>` configurations for supporting 64-bit libraries on 32-bit
250:wikipedia:`X86 <X86>` builds.
diff --git a/documentation/ref-manual/history.rst b/documentation/ref-manual/history.rst
deleted file mode 100644
index dc0a2ae797..0000000000
--- a/documentation/ref-manual/history.rst
+++ /dev/null
@@ -1,74 +0,0 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3***********************
4Manual Revision History
5***********************
6
7.. list-table::
8 :widths: 10 15 40
9 :header-rows: 1
10
11 * - Revision
12 - Date
13 - Note
14 * - 0.9
15 - November 2010
16 - The initial document released with the Yocto Project 0.9 Release
17 * - 1.0
18 - April 2011
19 - Released with the Yocto Project 1.0 Release.
20 * - 1.1
21 - October 2011
22 - Released with the Yocto Project 1.1 Release.
23 * - 1.2
24 - April 2012
25 - Released with the Yocto Project 1.2 Release.
26 * - 1.3
27 - October 2012
28 - Released with the Yocto Project 1.3 Release.
29 * - 1.4
30 - April 2013
31 - Released with the Yocto Project 1.4 Release.
32 * - 1.5
33 - October 2013
34 - Released with the Yocto Project 1.5 Release.
35 * - 1.6
36 - April 2014
37 - Released with the Yocto Project 1.6 Release.
38 * - 1.7
39 - October 2014
40 - Released with the Yocto Project 1.7 Release.
41 * - 1.8
42 - April 2015
43 - Released with the Yocto Project 1.8 Release.
44 * - 2.0
45 - October 2015
46 - Released with the Yocto Project 2.0 Release.
47 * - 2.1
48 - April 2016
49 - Released with the Yocto Project 2.1 Release.
50 * - 2.2
51 - October 2016
52 - Released with the Yocto Project 2.2 Release.
53 * - 2.3
54 - May 2017
55 - Released with the Yocto Project 2.3 Release.
56 * - 2.4
57 - October 2017
58 - Released with the Yocto Project 2.4 Release.
59 * - 2.5
60 - May 2018
61 - Released with the Yocto Project 2.5 Release.
62 * - 2.6
63 - November 2018
64 - Released with the Yocto Project 2.6 Release.
65 * - 2.7
66 - May 2019
67 - Released with the Yocto Project 2.7 Release.
68 * - 3.0
69 - October 2019
70 - Released with the Yocto Project 3.0 Release.
71 * - 3.1
72 - April 2020
73 - Released with the Yocto Project 3.1 Release.
74
diff --git a/documentation/ref-manual/images.rst b/documentation/ref-manual/images.rst
index cf5cc1109f..c9d8989261 100644
--- a/documentation/ref-manual/images.rst
+++ b/documentation/ref-manual/images.rst
@@ -14,24 +14,25 @@ image you want.
14 Building an image without GNU General Public License Version 3 14 Building an image without GNU General Public License Version 3
15 (GPLv3), GNU Lesser General Public License Version 3 (LGPLv3), and 15 (GPLv3), GNU Lesser General Public License Version 3 (LGPLv3), and
16 the GNU Affero General Public License Version 3 (AGPL-3.0) components 16 the GNU Affero General Public License Version 3 (AGPL-3.0) components
17 is only supported for minimal and base images. Furthermore, if you 17 is only tested for core-image-minimal image. Furthermore, if you would like to
18 are going to build an image using non-GPLv3 and similarly licensed 18 build an image and verify that it does not include GPLv3 and similarly licensed
19 components, you must make the following changes in the ``local.conf`` 19 components, you must make the following changes in the image recipe
20 file before using the BitBake command to build the minimal or base 20 file before using the BitBake command to build the image:
21 image:
22 ::
23 21
24 1. Comment out the EXTRA_IMAGE_FEATURES line 22 INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0*"
25 2. Set INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0"
26 23
24 Alternatively, you can adjust ``local.conf`` file, repeating and adjusting the line
25 for all images where the license restriction must apply:
26
27 INCOMPATIBLE_LICENSE:pn-your-image-name = "GPL-3.0* LGPL-3.0*"
27 28
28From within the ``poky`` Git repository, you can use the following 29From within the ``poky`` Git repository, you can use the following
29command to display the list of directories within the :term:`Source Directory` 30command to display the list of directories within the :term:`Source Directory`
30that contain image recipe files: :: 31that contain image recipe files::
31 32
32 $ ls meta*/recipes*/images/*.bb 33 $ ls meta*/recipes*/images/*.bb
33 34
34Following is a list of supported recipes: 35Here is a list of supported recipes:
35 36
36- ``build-appliance-image``: An example virtual machine that contains 37- ``build-appliance-image``: An example virtual machine that contains
37 all the pieces required to run builds using the build system as well 38 all the pieces required to run builds using the build system as well
@@ -47,34 +48,9 @@ Following is a list of supported recipes:
47- ``core-image-base``: A console-only image that fully supports the 48- ``core-image-base``: A console-only image that fully supports the
48 target device hardware. 49 target device hardware.
49 50
50- ``core-image-clutter``: An image with support for the Open GL-based
51 toolkit Clutter, which enables development of rich and animated
52 graphical user interfaces.
53
54- ``core-image-full-cmdline``: A console-only image with more 51- ``core-image-full-cmdline``: A console-only image with more
55 full-featured Linux system functionality installed. 52 full-featured Linux system functionality installed.
56 53
57- ``core-image-lsb``: An image that conforms to the Linux Standard Base
58 (LSB) specification. This image requires a distribution configuration
59 that enables LSB compliance (e.g. ``poky-lsb``). If you build
60 ``core-image-lsb`` without that configuration, the image will not be
61 LSB-compliant.
62
63- ``core-image-lsb-dev``: A ``core-image-lsb`` image that is suitable
64 for development work using the host. The image includes headers and
65 libraries you can use in a host development environment. This image
66 requires a distribution configuration that enables LSB compliance
67 (e.g. ``poky-lsb``). If you build ``core-image-lsb-dev`` without that
68 configuration, the image will not be LSB-compliant.
69
70- ``core-image-lsb-sdk``: A ``core-image-lsb`` that includes everything
71 in the cross-toolchain but also includes development headers and
72 libraries to form a complete standalone SDK. This image requires a
73 distribution configuration that enables LSB compliance (e.g.
74 ``poky-lsb``). If you build ``core-image-lsb-sdk`` without that
75 configuration, the image will not be LSB-compliant. This image is
76 suitable for development using the target.
77
78- ``core-image-minimal``: A small image just capable of allowing a 54- ``core-image-minimal``: A small image just capable of allowing a
79 device to boot. 55 device to boot.
80 56
@@ -83,11 +59,11 @@ Following is a list of supported recipes:
83 libraries you can use in a host development environment. 59 libraries you can use in a host development environment.
84 60
85- ``core-image-minimal-initramfs``: A ``core-image-minimal`` image that 61- ``core-image-minimal-initramfs``: A ``core-image-minimal`` image that
86 has the Minimal RAM-based Initial Root Filesystem (initramfs) as part 62 has the Minimal RAM-based Initial Root Filesystem (:term:`Initramfs`) as part
87 of the kernel, which allows the system to find the first "init" 63 of the kernel, which allows the system to find the first "init"
88 program more efficiently. See the 64 program more efficiently. See the
89 :term:`PACKAGE_INSTALL` variable for 65 :term:`PACKAGE_INSTALL` variable for
90 additional information helpful when working with initramfs images. 66 additional information helpful when working with :term:`Initramfs` images.
91 67
92- ``core-image-minimal-mtdutils``: A ``core-image-minimal`` image that 68- ``core-image-minimal-mtdutils``: A ``core-image-minimal`` image that
93 has support for the Minimal MTD Utilities, which let the user 69 has support for the Minimal MTD Utilities, which let the user
@@ -117,22 +93,22 @@ Following is a list of supported recipes:
117 development headers and libraries to form a complete standalone SDK 93 development headers and libraries to form a complete standalone SDK
118 and is suitable for development using the target. 94 and is suitable for development using the target.
119 95
120- ``core-image-testmaster``: A "master" image designed to be used for 96- ``core-image-testmaster``: A "controller" image designed to be used for
121 automated runtime testing. Provides a "known good" image that is 97 automated runtime testing. Provides a "known good" image that is
122 deployed to a separate partition so that you can boot into it and use 98 deployed to a separate partition so that you can boot into it and use
123 it to deploy a second image to be tested. You can find more 99 it to deploy a second image to be tested. You can find more
124 information about runtime testing in the 100 information about runtime testing in the
125 ":ref:`dev-manual/common-tasks:performing automated runtime testing`" 101 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
126 section in the Yocto Project Development Tasks Manual. 102 section in the Yocto Project Test Environment Manual.
127 103
128- ``core-image-testmaster-initramfs``: A RAM-based Initial Root 104- ``core-image-testmaster-initramfs``: A RAM-based Initial Root
129 Filesystem (initramfs) image tailored for use with the 105 Filesystem (:term:`Initramfs`) image tailored for use with the
130 ``core-image-testmaster`` image. 106 ``core-image-testmaster`` image.
131 107
132- ``core-image-weston``: A very basic Wayland image with a terminal. 108- ``core-image-weston``: A very basic Wayland image with a terminal.
133 This image provides the Wayland protocol libraries and the reference 109 This image provides the Wayland protocol libraries and the reference
134 Weston compositor. For more information, see the 110 Weston compositor. For more information, see the
135 ":ref:`dev-manual/common-tasks:using wayland and weston`" 111 ":ref:`dev-manual/wayland:using wayland and weston`"
136 section in the Yocto Project Development Tasks Manual. 112 section in the Yocto Project Development Tasks Manual.
137 113
138- ``core-image-x11``: A very basic X11 image with a terminal. 114- ``core-image-x11``: A very basic X11 image with a terminal.
diff --git a/documentation/ref-manual/index.rst b/documentation/ref-manual/index.rst
index deb0383cfc..aa1a63e050 100644
--- a/documentation/ref-manual/index.rst
+++ b/documentation/ref-manual/index.rst
@@ -11,12 +11,13 @@ Yocto Project Reference Manual
11 :numbered: 11 :numbered:
12 12
13 system-requirements 13 system-requirements
14 yocto-project-supported-features
14 terms 15 terms
15 release-process 16 release-process
16 migration
17 structure 17 structure
18 classes 18 classes
19 tasks 19 tasks
20 fragments
20 devtool-reference 21 devtool-reference
21 kickstart 22 kickstart
22 qa-checks 23 qa-checks
@@ -26,6 +27,5 @@ Yocto Project Reference Manual
26 varlocality 27 varlocality
27 faq 28 faq
28 resources 29 resources
29 history
30 30
31.. include:: /boilerplate.rst 31.. include:: /boilerplate.rst
diff --git a/documentation/ref-manual/kickstart.rst b/documentation/ref-manual/kickstart.rst
index 472820f165..80e2f9d84c 100644
--- a/documentation/ref-manual/kickstart.rst
+++ b/documentation/ref-manual/kickstart.rst
@@ -30,10 +30,9 @@ Command: part or partition
30========================== 30==========================
31 31
32Either of these commands creates a partition on the system and uses the 32Either of these commands creates a partition on the system and uses the
33following syntax: 33following syntax::
34::
35 34
36 part [mntpoint] 35 part [mntpoint]
37 partition [mntpoint] 36 partition [mntpoint]
38 37
39If you do not 38If you do not
@@ -55,36 +54,40 @@ must also provide one of the ``--ondrive``, ``--ondisk``, or
55.. note:: 54.. note::
56 55
57 The mount program must understand the PARTUUID syntax you use with 56 The mount program must understand the PARTUUID syntax you use with
58 ``--use-uuid`` and non-root *mountpoint*, including swap. The busybox 57 ``--use-uuid`` and non-root *mountpoint*, including swap. The default
59 versions of these application are currently excluded. 58 configuration of BusyBox in OpenEmbedded supports this, but this may
59 be disabled in custom configurations.
60 60
61Here is an example that uses "/" as the mountpoint. The command uses 61Here is an example that uses "/" as the mountpoint. The command uses
62``--ondisk`` to force the partition onto the ``sdb`` disk: 62``--ondisk`` to force the partition onto the ``sdb`` disk::
63::
64 63
65 part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024 64 part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024
66 65
67Here is a list that describes other supported options you can use with 66Here is a list that describes other supported options you can use with
68the ``part`` and ``partition`` commands: 67the ``part`` and ``partition`` commands:
69 68
70- ``--size``: The minimum partition size in MBytes. Specify an 69- ``--size``: The minimum partition size. Specify as an integer value
71 integer value such as 500. Do not append the number with "MB". You do 70 optionally followed by one of the units "k" / "K" for kibibyte,
72 not need this option if you use ``--source``. 71 "M" for mebibyte and "G" for gibibyte. The default unit if none is
72 given is "M". You do not need this option if you use ``--source``.
73 73
74- ``--fixed-size``: The exact partition size in MBytes. You cannot 74- ``--fixed-size``: The exact partition size. Specify as an integer
75 specify with ``--size``. An error occurs when assembling the disk 75 value optionally followed by one of the units "k" / "K" for kibibyte,
76 image if the partition data is larger than ``--fixed-size``. 76 "M" for mebibyte and "G" for gibibyte. The default unit if none is
77 given is "M". Cannot be specify together with ``--size``. An error
78 occurs when assembling the disk image if the partition data is larger
79 than ``--fixed-size``.
77 80
78- ``--source``: This option is a Wic-specific option that names the 81- ``--source``: This option is a Wic-specific option that names the
79 source of the data that populates the partition. The most common 82 source of the data that populates the partition. The most common
80 value for this option is "rootfs", but you can use any value that 83 value for this option is "rootfs", but you can use any value that
81 maps to a valid source plugin. For information on the source plugins, 84 maps to a valid source plugin. For information on the source plugins,
82 see the ":ref:`dev-manual/common-tasks:using the wic plugin interface`" 85 see the ":ref:`dev-manual/wic:using the wic plugin interface`"
83 section in the Yocto Project Development Tasks Manual. 86 section in the Yocto Project Development Tasks Manual.
84 87
85 If you use ``--source rootfs``, Wic creates a partition as large as 88 If you use ``--source rootfs``, Wic creates a partition as large as
86 needed and fills it with the contents of the root filesystem pointed 89 needed and fills it with the contents of the root filesystem pointed
87 to by the ``-r`` command-line option or the equivalent rootfs derived 90 to by the ``-r`` command-line option or the equivalent root filesystem derived
88 from the ``-e`` command-line option. The filesystem type used to 91 from the ``-e`` command-line option. The filesystem type used to
89 create the partition is driven by the value of the ``--fstype`` 92 create the partition is driven by the value of the ``--fstype``
90 option specified for the partition. See the entry on ``--fstype`` 93 option specified for the partition. See the entry on ``--fstype``
@@ -93,7 +96,7 @@ the ``part`` and ``partition`` commands:
93 If you use ``--source plugin-name``, Wic creates a partition as large 96 If you use ``--source plugin-name``, Wic creates a partition as large
94 as needed and fills it with the contents of the partition that is 97 as needed and fills it with the contents of the partition that is
95 generated by the specified plugin name using the data pointed to by 98 generated by the specified plugin name using the data pointed to by
96 the ``-r`` command-line option or the equivalent rootfs derived from 99 the ``-r`` command-line option or the equivalent root filesystem derived from
97 the ``-e`` command-line option. Exactly what those contents are and 100 the ``-e`` command-line option. Exactly what those contents are and
98 filesystem type used are dependent on the given plugin 101 filesystem type used are dependent on the given plugin
99 implementation. 102 implementation.
@@ -108,18 +111,22 @@ the ``part`` and ``partition`` commands:
108- ``--fstype``: Sets the file system type for the partition. Valid 111- ``--fstype``: Sets the file system type for the partition. Valid
109 values are: 112 values are:
110 113
111 - ``ext4`` 114 - ``btrfs``
112 115
113 - ``ext3`` 116 - ``erofs``
114 117
115 - ``ext2`` 118 - ``ext2``
116 119
117 - ``btrfs`` 120 - ``ext3``
121
122 - ``ext4``
118 123
119 - ``squashfs`` 124 - ``squashfs``
120 125
121 - ``swap`` 126 - ``swap``
122 127
128 - ``vfat``
129
123- ``--fsoptions``: Specifies a free-form string of options to be used 130- ``--fsoptions``: Specifies a free-form string of options to be used
124 when mounting the filesystem. This string is copied into the 131 when mounting the filesystem. This string is copied into the
125 ``/etc/fstab`` file of the installed system and should be enclosed in 132 ``/etc/fstab`` file of the installed system and should be enclosed in
@@ -134,10 +141,13 @@ the ``part`` and ``partition`` commands:
134- ``--align (in KBytes)``: This option is a Wic-specific option that 141- ``--align (in KBytes)``: This option is a Wic-specific option that
135 says to start partitions on boundaries given x KBytes. 142 says to start partitions on boundaries given x KBytes.
136 143
137- ``--offset (in KBytes)``: This option is a Wic-specific option that 144- ``--offset``: This option is a Wic-specific option that
138 says to place a partition at exactly the specified offset. If the 145 says to place a partition at exactly the specified offset. If the
139 partition cannot be placed at the specified offset, the image build 146 partition cannot be placed at the specified offset, the image build
140 will fail. 147 will fail. Specify as an integer value optionally followed by one of
148 the units "s" / "S" for 512 byte sector, "k" / "K" for kibibyte, "M"
149 for mebibyte and "G" for gibibyte. The default unit if none is given
150 is "k".
141 151
142- ``--no-table``: This option is a Wic-specific option. Using the 152- ``--no-table``: This option is a Wic-specific option. Using the
143 option reserves space for the partition and causes it to become 153 option reserves space for the partition and causes it to become
@@ -148,10 +158,23 @@ the ``part`` and ``partition`` commands:
148 excludes the given relative path from the resulting image. This 158 excludes the given relative path from the resulting image. This
149 option is only effective with the rootfs source plugin. 159 option is only effective with the rootfs source plugin.
150 160
151- ``--extra-space``: This option is a Wic-specific option that adds 161- ``--extra-filesystem-space``: This option is a Wic-specific option that adds
152 extra space after the space filled by the content of the partition. 162 extra space after the space filled by the content of the partition.
153 The final size can exceed the size specified by the ``--size`` 163 The final size can exceed the size specified by the ``--size``
154 option. The default value is 10 Mbytes. 164 option. The default value is 10M. Specify as an integer value
165 optionally followed by one of the units "k" / "K" for kibibyte, "M"
166 for mebibyte and "G" for gibibyte. The default unit if none is given
167 is "M".
168
169- ``--extra-partition-space``: This option is a Wic-specific option that adds
170 extra empty space after the space filled by the filesystem.
171 With ``--fixed-size`` option, the extra partition space is removed from the
172 filesystem size. Otherwise (with or without ``--size`` flag), the extra
173 partition space is added to the final partition size.
174 The default value is 0M. Specify as an integer value
175 optionally followed by one of the units "k" / "K" for kibibyte, "M"
176 for mebibyte and "G" for gibibyte. The default unit if none is given
177 is "M".
155 178
156- ``--overhead-factor``: This option is a Wic-specific option that 179- ``--overhead-factor``: This option is a Wic-specific option that
157 multiplies the size of the partition by the option's value. You must 180 multiplies the size of the partition by the option's value. You must
@@ -164,7 +187,7 @@ the ``part`` and ``partition`` commands:
164- ``--part-type``: This option is a Wic-specific option that 187- ``--part-type``: This option is a Wic-specific option that
165 specifies the partition type globally unique identifier (GUID) for 188 specifies the partition type globally unique identifier (GUID) for
166 GPT partitions. You can find the list of partition type GUIDs at 189 GPT partitions. You can find the list of partition type GUIDs at
167 https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs. 190 :wikipedia:`GUID_Partition_Table#Partition_type_GUIDs`.
168 191
169- ``--use-uuid``: This option is a Wic-specific option that causes 192- ``--use-uuid``: This option is a Wic-specific option that causes
170 Wic to generate a random GUID for the partition. The generated 193 Wic to generate a random GUID for the partition. The generated
@@ -198,19 +221,24 @@ supports the following options:
198.. note:: 221.. note::
199 222
200 Bootloader functionality and boot partitions are implemented by the 223 Bootloader functionality and boot partitions are implemented by the
201 various 224 various source plugins that implement bootloader functionality. The bootloader
202 --source
203 plugins that implement bootloader functionality. The bootloader
204 command essentially provides a means of modifying bootloader 225 command essentially provides a means of modifying bootloader
205 configuration. 226 configuration.
206 227
207- ``--timeout``: Specifies the number of seconds before the
208 bootloader times out and boots the default option.
209
210- ``--append``: Specifies kernel parameters. These parameters will be 228- ``--append``: Specifies kernel parameters. These parameters will be
211 added to the syslinux ``APPEND`` or ``grub`` kernel command line. 229 added to the syslinux :term:`APPEND` or ``grub`` kernel command line.
212 230
213- ``--configfile``: Specifies a user-defined configuration file for 231- ``--configfile``: Specifies a user-defined configuration file for
214 the bootloader. You can provide a full pathname for the file or a 232 the bootloader. You can provide a full pathname for the file or a
215 file that exists in the ``canned-wks`` folder. This option overrides 233 file located in the ``canned-wks`` folder. This option overrides
216 all other bootloader options. 234 all other bootloader options.
235
236- ``--ptable``: Specifies the partition table format. Valid values are:
237
238 - ``msdos``
239
240 - ``gpt``
241
242- ``--timeout``: Specifies the number of seconds before the
243 bootloader times out and boots the default option.
244
diff --git a/documentation/ref-manual/migration-1.3.rst b/documentation/ref-manual/migration-1.3.rst
deleted file mode 100644
index 12e225b149..0000000000
--- a/documentation/ref-manual/migration-1.3.rst
+++ /dev/null
@@ -1,195 +0,0 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Moving to the Yocto Project 1.3 Release
4=======================================
5
6This section provides migration information for moving to the Yocto
7Project 1.3 Release from the prior release.
8
9.. _1.3-local-configuration:
10
11Local Configuration
12-------------------
13
14Differences include changes for
15:term:`SSTATE_MIRRORS` and ``bblayers.conf``.
16
17.. _migration-1.3-sstate-mirrors:
18
19SSTATE_MIRRORS
20~~~~~~~~~~~~~~
21
22The shared state cache (sstate-cache), as pointed to by
23:term:`SSTATE_DIR`, by default now has two-character
24subdirectories to prevent issues arising from too many files in the same
25directory. Also, native sstate-cache packages, which are built to run on
26the host system, will go into a subdirectory named using the distro ID
27string. If you copy the newly structured sstate-cache to a mirror
28location (either local or remote) and then point to it in
29:term:`SSTATE_MIRRORS`, you need to append "PATH"
30to the end of the mirror URL so that the path used by BitBake before the
31mirror substitution is appended to the path used to access the mirror.
32Here is an example: ::
33
34 SSTATE_MIRRORS = "file://.* http://someserver.tld/share/sstate/PATH"
35
36.. _migration-1.3-bblayers-conf:
37
38bblayers.conf
39~~~~~~~~~~~~~
40
41The ``meta-yocto`` layer consists of two parts that correspond to the
42Poky reference distribution and the reference hardware Board Support
43Packages (BSPs), respectively: ``meta-yocto`` and ``meta-yocto-bsp``.
44When running BitBake for the first time after upgrading, your
45``conf/bblayers.conf`` file will be updated to handle this change and
46you will be asked to re-run or restart for the changes to take effect.
47
48.. _1.3-recipes:
49
50Recipes
51-------
52
53Differences include changes for the following:
54
55.. _migration-1.3-python-function-whitespace:
56
57Python Function Whitespace
58~~~~~~~~~~~~~~~~~~~~~~~~~~
59
60All Python functions must now use four spaces for indentation.
61Previously, an inconsistent mix of spaces and tabs existed, which made
62extending these functions using ``_append`` or ``_prepend`` complicated
63given that Python treats whitespace as syntactically significant. If you
64are defining or extending any Python functions (e.g.
65``populate_packages``, ``do_unpack``, ``do_patch`` and so forth) in
66custom recipes or classes, you need to ensure you are using consistent
67four-space indentation.
68
69.. _migration-1.3-proto=-in-src-uri:
70
71proto= in SRC_URI
72~~~~~~~~~~~~~~~~~
73
74Any use of ``proto=`` in :term:`SRC_URI` needs to be
75changed to ``protocol=``. In particular, this applies to the following
76URIs:
77
78- ``svn://``
79
80- ``bzr://``
81
82- ``hg://``
83
84- ``osc://``
85
86Other URIs were already using ``protocol=``. This change improves
87consistency.
88
89.. _migration-1.3-nativesdk:
90
91nativesdk
92~~~~~~~~~
93
94The suffix ``nativesdk`` is now implemented as a prefix, which
95simplifies a lot of the packaging code for ``nativesdk`` recipes. All
96custom ``nativesdk`` recipes, which are relocatable packages that are
97native to :term:`SDK_ARCH`, and any references need to
98be updated to use ``nativesdk-*`` instead of ``*-nativesdk``.
99
100.. _migration-1.3-task-recipes:
101
102Task Recipes
103~~~~~~~~~~~~
104
105"Task" recipes are now known as "Package groups" and have been renamed
106from ``task-*.bb`` to ``packagegroup-*.bb``. Existing references to the
107previous ``task-*`` names should work in most cases as there is an
108automatic upgrade path for most packages. However, you should update
109references in your own recipes and configurations as they could be
110removed in future releases. You should also rename any custom ``task-*``
111recipes to ``packagegroup-*``, and change them to inherit
112``packagegroup`` instead of ``task``, as well as taking the opportunity
113to remove anything now handled by ``packagegroup.bbclass``, such as
114providing ``-dev`` and ``-dbg`` packages, setting
115:term:`LIC_FILES_CHKSUM`, and so forth. See the
116":ref:`packagegroup.bbclass <ref-classes-packagegroup>`" section for
117further details.
118
119.. _migration-1.3-image-features:
120
121IMAGE_FEATURES
122~~~~~~~~~~~~~~
123
124Image recipes that previously included ``apps-console-core`` in
125:term:`IMAGE_FEATURES` should now include ``splash``
126instead to enable the boot-up splash screen. Retaining
127``apps-console-core`` will still include the splash screen but generates a
128warning. The ``apps-x11-core`` and ``apps-x11-games`` ``IMAGE_FEATURES``
129features have been removed.
130
131.. _migration-1.3-removed-recipes:
132
133Removed Recipes
134~~~~~~~~~~~~~~~
135
136The following recipes have been removed. For most of them, it is
137unlikely that you would have any references to them in your own
138:term:`Metadata`. However, you should check your metadata
139against this list to be sure:
140
141- ``libx11-trim``: Replaced by ``libx11``, which has a negligible
142 size difference with modern Xorg.
143
144- ``xserver-xorg-lite``: Use ``xserver-xorg``, which has a negligible
145 size difference when DRI and GLX modules are not installed.
146
147- ``xserver-kdrive``: Effectively unmaintained for many years.
148
149- ``mesa-xlib``: No longer serves any purpose.
150
151- ``galago``: Replaced by telepathy.
152
153- ``gail``: Functionality was integrated into GTK+ 2.13.
154
155- ``eggdbus``: No longer needed.
156
157- ``gcc-*-intermediate``: The build has been restructured to avoid
158 the need for this step.
159
160- ``libgsmd``: Unmaintained for many years. Functionality now
161 provided by ``ofono`` instead.
162
163- *contacts, dates, tasks, eds-tools*: Largely unmaintained PIM
164 application suite. It has been moved to ``meta-gnome`` in
165 ``meta-openembedded``.
166
167In addition to the previously listed changes, the ``meta-demoapps``
168directory has also been removed because the recipes in it were not being
169maintained and many had become obsolete or broken. Additionally, these
170recipes were not parsed in the default configuration. Many of these
171recipes are already provided in an updated and maintained form within
172the OpenEmbedded community layers such as ``meta-oe`` and
173``meta-gnome``. For the remainder, you can now find them in the
174``meta-extras`` repository, which is in the
175:yocto_git:`Source Repositories <>` at
176:yocto_git:`/meta-extras/`.
177
178.. _1.3-linux-kernel-naming:
179
180Linux Kernel Naming
181-------------------
182
183The naming scheme for kernel output binaries has been changed to now
184include :term:`PE` as part of the filename:
185::
186
187 KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PE}-${PV}-${PR}-${MACHINE}-${DATETIME}"
188
189Because the ``PE`` variable is not set by default, these binary files
190could result with names that include two dash characters. Here is an
191example: ::
192
193 bzImage--3.10.9+git0+cd502a8814_7144bcc4b8-r0-qemux86-64-20130830085431.bin
194
195
diff --git a/documentation/ref-manual/migration-1.4.rst b/documentation/ref-manual/migration-1.4.rst
deleted file mode 100644
index 0b7e861176..0000000000
--- a/documentation/ref-manual/migration-1.4.rst
+++ /dev/null
@@ -1,237 +0,0 @@
1Moving to the Yocto Project 1.4 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 1.4 Release from the prior release.
6
7.. _migration-1.4-bitbake:
8
9BitBake
10-------
11
12Differences include the following:
13
14- *Comment Continuation:* If a comment ends with a line continuation
15 (\\) character, then the next line must also be a comment. Any
16 instance where this is not the case, now triggers a warning. You must
17 either remove the continuation character, or be sure the next line is
18 a comment.
19
20- *Package Name Overrides:* The runtime package specific variables
21 :term:`RDEPENDS`,
22 :term:`RRECOMMENDS`,
23 :term:`RSUGGESTS`,
24 :term:`RPROVIDES`,
25 :term:`RCONFLICTS`,
26 :term:`RREPLACES`, :term:`FILES`,
27 :term:`ALLOW_EMPTY`, and the pre, post, install,
28 and uninstall script functions ``pkg_preinst``, ``pkg_postinst``,
29 ``pkg_prerm``, and ``pkg_postrm`` should always have a package name
30 override. For example, use ``RDEPENDS_${PN}`` for the main package
31 instead of ``RDEPENDS``. BitBake uses more strict checks when it
32 parses recipes.
33
34.. _migration-1.4-build-behavior:
35
36Build Behavior
37--------------
38
39Differences include the following:
40
41- *Shared State Code:* The shared state code has been optimized to
42 avoid running unnecessary tasks. For example, the following no longer
43 populates the target sysroot since that is not necessary:
44 ::
45
46 $ bitbake -c rootfs some-image
47
48 Instead, the system just needs to extract the
49 output package contents, re-create the packages, and construct the
50 root filesystem. This change is unlikely to cause any problems unless
51 you have missing declared dependencies.
52
53- *Scanning Directory Names:* When scanning for files in
54 :term:`SRC_URI`, the build system now uses
55 :term:`FILESOVERRIDES` instead of
56 :term:`OVERRIDES` for the directory names. In
57 general, the values previously in ``OVERRIDES`` are now in
58 ``FILESOVERRIDES`` as well. However, if you relied upon an additional
59 value you previously added to ``OVERRIDES``, you might now need to
60 add it to ``FILESOVERRIDES`` unless you are already adding it through
61 the :term:`MACHINEOVERRIDES` or
62 :term:`DISTROOVERRIDES` variables, as
63 appropriate. For more related changes, see the
64 ":ref:`ref-manual/migration-1.4:variables`" section.
65
66.. _migration-1.4-proxies-and-fetching-source:
67
68Proxies and Fetching Source
69---------------------------
70
71A new ``oe-git-proxy`` script has been added to replace previous methods
72of handling proxies and fetching source from Git. See the
73``meta-yocto/conf/site.conf.sample`` file for information on how to use
74this script.
75
76.. _migration-1.4-custom-interfaces-file-netbase-change:
77
78Custom Interfaces File (netbase change)
79---------------------------------------
80
81If you have created your own custom ``etc/network/interfaces`` file by
82creating an append file for the ``netbase`` recipe, you now need to
83create an append file for the ``init-ifupdown`` recipe instead, which
84you can find in the :term:`Source Directory` at
85``meta/recipes-core/init-ifupdown``. For information on how to use
86append files, see the
87":ref:`dev-manual/common-tasks:using .bbappend files in your layer`"
88section in the Yocto Project Development Tasks Manual.
89
90.. _migration-1.4-remote-debugging:
91
92Remote Debugging
93----------------
94
95Support for remote debugging with the Eclipse IDE is now separated into
96an image feature (``eclipse-debug``) that corresponds to the
97``packagegroup-core-eclipse-debug`` package group. Previously, the
98debugging feature was included through the ``tools-debug`` image
99feature, which corresponds to the ``packagegroup-core-tools-debug``
100package group.
101
102.. _migration-1.4-variables:
103
104Variables
105---------
106
107The following variables have changed:
108
109- ``SANITY_TESTED_DISTROS``: This variable now uses a distribution
110 ID, which is composed of the host distributor ID followed by the
111 release. Previously,
112 :term:`SANITY_TESTED_DISTROS` was
113 composed of the description field. For example, "Ubuntu 12.10"
114 becomes "Ubuntu-12.10". You do not need to worry about this change if
115 you are not specifically setting this variable, or if you are
116 specifically setting it to "".
117
118- ``SRC_URI``: The ``${``\ :term:`PN`\ ``}``,
119 ``${``\ :term:`PF`\ ``}``,
120 ``${``\ :term:`P`\ ``}``, and ``FILE_DIRNAME`` directories
121 have been dropped from the default value of the
122 :term:`FILESPATH` variable, which is used as the
123 search path for finding files referred to in
124 :term:`SRC_URI`. If you have a recipe that relied upon
125 these directories, which would be unusual, then you will need to add
126 the appropriate paths within the recipe or, alternatively, rearrange
127 the files. The most common locations are still covered by ``${``\ :term:`BP`\ ``}``,
128 ``${``\ :term:`BPN`\ ``}``, and "files", which all remain in the default value of
129 :term:`FILESPATH`.
130
131.. _migration-target-package-management-with-rpm:
132
133Target Package Management with RPM
134----------------------------------
135
136If runtime package management is enabled and the RPM backend is
137selected, Smart is now installed for package download, dependency
138resolution, and upgrades instead of Zypper. For more information on how
139to use Smart, run the following command on the target:
140::
141
142 smart --help
143
144.. _migration-1.4-recipes-moved:
145
146Recipes Moved
147-------------
148
149The following recipes were moved from their previous locations because
150they are no longer used by anything in the OpenEmbedded-Core:
151
152- ``clutter-box2d``: Now resides in the ``meta-oe`` layer.
153
154- ``evolution-data-server``: Now resides in the ``meta-gnome`` layer.
155
156- ``gthumb``: Now resides in the ``meta-gnome`` layer.
157
158- ``gtkhtml2``: Now resides in the ``meta-oe`` layer.
159
160- ``gupnp``: Now resides in the ``meta-multimedia`` layer.
161
162- ``gypsy``: Now resides in the ``meta-oe`` layer.
163
164- ``libcanberra``: Now resides in the ``meta-gnome`` layer.
165
166- ``libgdata``: Now resides in the ``meta-gnome`` layer.
167
168- ``libmusicbrainz``: Now resides in the ``meta-multimedia`` layer.
169
170- ``metacity``: Now resides in the ``meta-gnome`` layer.
171
172- ``polkit``: Now resides in the ``meta-oe`` layer.
173
174- ``zeroconf``: Now resides in the ``meta-networking`` layer.
175
176.. _migration-1.4-removals-and-renames:
177
178Removals and Renames
179--------------------
180
181The following list shows what has been removed or renamed:
182
183- ``evieext``: Removed because it has been removed from ``xserver``
184 since 2008.
185
186- *Gtk+ DirectFB:* Removed support because upstream Gtk+ no longer
187 supports it as of version 2.18.
188
189- ``libxfontcache / xfontcacheproto``: Removed because they were
190 removed from the Xorg server in 2008.
191
192- ``libxp / libxprintapputil / libxprintutil / printproto``: Removed
193 because the XPrint server was removed from Xorg in 2008.
194
195- ``libxtrap / xtrapproto``: Removed because their functionality was
196 broken upstream.
197
198- *linux-yocto 3.0 kernel:* Removed with linux-yocto 3.8 kernel being
199 added. The linux-yocto 3.2 and linux-yocto 3.4 kernels remain as part
200 of the release.
201
202- ``lsbsetup``: Removed with functionality now provided by
203 ``lsbtest``.
204
205- ``matchbox-stroke``: Removed because it was never more than a
206 proof-of-concept.
207
208- ``matchbox-wm-2 / matchbox-theme-sato-2``: Removed because they are
209 not maintained. However, ``matchbox-wm`` and ``matchbox-theme-sato``
210 are still provided.
211
212- ``mesa-dri``: Renamed to ``mesa``.
213
214- ``mesa-xlib``: Removed because it was no longer useful.
215
216- ``mutter``: Removed because nothing ever uses it and the recipe is
217 very old.
218
219- ``orinoco-conf``: Removed because it has become obsolete.
220
221- ``update-modules``: Removed because it is no longer used. The
222 kernel module ``postinstall`` and ``postrm`` scripts can now do the
223 same task without the use of this script.
224
225- ``web``: Removed because it is not maintained. Superseded by
226 ``web-webkit``.
227
228- ``xf86bigfontproto``: Removed because upstream it has been disabled
229 by default since 2007. Nothing uses ``xf86bigfontproto``.
230
231- ``xf86rushproto``: Removed because its dependency in ``xserver``
232 was spurious and it was removed in 2005.
233
234- ``zypper / libzypp / sat-solver``: Removed and been functionally
235 replaced with Smart (``python-smartpm``) when RPM packaging is used
236 and package management is enabled on the target.
237
diff --git a/documentation/ref-manual/migration-1.5.rst b/documentation/ref-manual/migration-1.5.rst
deleted file mode 100644
index 2716bc9cfd..0000000000
--- a/documentation/ref-manual/migration-1.5.rst
+++ /dev/null
@@ -1,353 +0,0 @@
1Moving to the Yocto Project 1.5 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 1.5 Release from the prior release.
6
7.. _migration-1.5-host-dependency-changes:
8
9Host Dependency Changes
10-----------------------
11
12The OpenEmbedded build system now has some additional requirements on
13the host system:
14
15- Python 2.7.3+
16
17- Tar 1.24+
18
19- Git 1.7.8+
20
21- Patched version of Make if you are using 3.82. Most distributions
22 that provide Make 3.82 use the patched version.
23
24If the Linux distribution you are using on your build host does not
25provide packages for these, you can install and use the Buildtools
26tarball, which provides an SDK-like environment containing them.
27
28For more information on this requirement, see the
29":ref:`ref-manual/system-requirements:required git, tar, python and gcc versions`"
30section.
31
32.. _migration-1.5-atom-pc-bsp:
33
34``atom-pc`` Board Support Package (BSP)
35---------------------------------------
36
37The ``atom-pc`` hardware reference BSP has been replaced by a
38``genericx86`` BSP. This BSP is not necessarily guaranteed to work on
39all x86 hardware, but it will run on a wider range of systems than the
40``atom-pc`` did.
41
42.. note::
43
44 Additionally, a ``genericx86-64`` BSP has been added for 64-bit Atom
45 systems.
46
47.. _migration-1.5-bitbake:
48
49BitBake
50-------
51
52The following changes have been made that relate to BitBake:
53
54- BitBake now supports a ``_remove`` operator. The addition of this
55 operator means you will have to rename any items in recipe space
56 (functions, variables) whose names currently contain ``_remove_`` or
57 end with ``_remove`` to avoid unexpected behavior.
58
59- BitBake's global method pool has been removed. This method is not
60 particularly useful and led to clashes between recipes containing
61 functions that had the same name.
62
63- The "none" server backend has been removed. The "process" server
64 backend has been serving well as the default for a long time now.
65
66- The ``bitbake-runtask`` script has been removed.
67
68- ``${``\ :term:`P`\ ``}`` and
69 ``${``\ :term:`PF`\ ``}`` are no longer added to
70 :term:`PROVIDES` by default in ``bitbake.conf``.
71 These version-specific ``PROVIDES`` items were seldom used.
72 Attempting to use them could result in two versions being built
73 simultaneously rather than just one version due to the way BitBake
74 resolves dependencies.
75
76.. _migration-1.5-qa-warnings:
77
78QA Warnings
79-----------
80
81The following changes have been made to the package QA checks:
82
83- If you have customized :term:`ERROR_QA` or
84 :term:`WARN_QA` values in your configuration, check
85 that they contain all of the issues that you wish to be reported.
86 Previous Yocto Project versions contained a bug that meant that any
87 item not mentioned in ``ERROR_QA`` or ``WARN_QA`` would be treated as
88 a warning. Consequently, several important items were not already in
89 the default value of ``WARN_QA``. All of the possible QA checks are
90 now documented in the ":ref:`insane.bbclass <ref-classes-insane>`"
91 section.
92
93- An additional QA check has been added to check if
94 ``/usr/share/info/dir`` is being installed. Your recipe should delete
95 this file within :ref:`ref-tasks-install` if "make
96 install" is installing it.
97
98- If you are using the ``buildhistory`` class, the check for the package
99 version going backwards is now controlled using a standard QA check.
100 Thus, if you have customized your ``ERROR_QA`` or ``WARN_QA`` values
101 and still wish to have this check performed, you should add
102 "version-going-backwards" to your value for one or the other
103 variables depending on how you wish it to be handled. See the
104 documented QA checks in the
105 ":ref:`insane.bbclass <ref-classes-insane>`" section.
106
107.. _migration-1.5-directory-layout-changes:
108
109Directory Layout Changes
110------------------------
111
112The following directory changes exist:
113
114- Output SDK installer files are now named to include the image name
115 and tuning architecture through the :term:`SDK_NAME`
116 variable.
117
118- Images and related files are now installed into a directory that is
119 specific to the machine, instead of a parent directory containing
120 output files for multiple machines. The
121 :term:`DEPLOY_DIR_IMAGE` variable continues
122 to point to the directory containing images for the current
123 :term:`MACHINE` and should be used anywhere there is a
124 need to refer to this directory. The ``runqemu`` script now uses this
125 variable to find images and kernel binaries and will use BitBake to
126 determine the directory. Alternatively, you can set the
127 ``DEPLOY_DIR_IMAGE`` variable in the external environment.
128
129- When buildhistory is enabled, its output is now written under the
130 :term:`Build Directory` rather than
131 :term:`TMPDIR`. Doing so makes it easier to delete
132 ``TMPDIR`` and preserve the build history. Additionally, data for
133 produced SDKs is now split by :term:`IMAGE_NAME`.
134
135- The ``pkgdata`` directory produced as part of the packaging process
136 has been collapsed into a single machine-specific directory. This
137 directory is located under ``sysroots`` and uses a machine-specific
138 name (i.e. ``tmp/sysroots/machine/pkgdata``).
139
140.. _migration-1.5-shortened-git-srcrev-values:
141
142Shortened Git ``SRCREV`` Values
143-------------------------------
144
145BitBake will now shorten revisions from Git repositories from the normal
14640 characters down to 10 characters within :term:`SRCPV`
147for improved usability in path and file names. This change should be
148safe within contexts where these revisions are used because the chances
149of spatially close collisions is very low. Distant collisions are not a
150major issue in the way the values are used.
151
152.. _migration-1.5-image-features:
153
154``IMAGE_FEATURES``
155------------------
156
157The following changes have been made that relate to
158:term:`IMAGE_FEATURES`:
159
160- The value of ``IMAGE_FEATURES`` is now validated to ensure invalid
161 feature items are not added. Some users mistakenly add package names
162 to this variable instead of using
163 :term:`IMAGE_INSTALL` in order to have the
164 package added to the image, which does not work. This change is
165 intended to catch those kinds of situations. Valid ``IMAGE_FEATURES``
166 are drawn from ``PACKAGE_GROUP`` definitions,
167 :term:`COMPLEMENTARY_GLOB` and a new
168 "validitems" varflag on ``IMAGE_FEATURES``. The "validitems" varflag
169 change allows additional features to be added if they are not
170 provided using the previous two mechanisms.
171
172- The previously deprecated "apps-console-core" ``IMAGE_FEATURES`` item
173 is no longer supported. Add "splash" to ``IMAGE_FEATURES`` if you
174 wish to have the splash screen enabled, since this is all that
175 apps-console-core was doing.
176
177.. _migration-1.5-run:
178
179``/run``
180--------
181
182The ``/run`` directory from the Filesystem Hierarchy Standard 3.0 has
183been introduced. You can find some of the implications for this change
184:oe_git:`here </openembedded-core/commit/?id=0e326280a15b0f2c4ef2ef4ec441f63f55b75873>`.
185The change also means that recipes that install files to ``/var/run``
186must be changed. You can find a guide on how to make these changes
187`here <https://www.mail-archive.com/openembedded-devel@lists.openembedded.org/msg31649.html>`__.
188
189.. _migration-1.5-removal-of-package-manager-database-within-image-recipes:
190
191Removal of Package Manager Database Within Image Recipes
192--------------------------------------------------------
193
194The image ``core-image-minimal`` no longer adds
195``remove_packaging_data_files`` to
196:term:`ROOTFS_POSTPROCESS_COMMAND`.
197This addition is now handled automatically when "package-management" is
198not in :term:`IMAGE_FEATURES`. If you have custom
199image recipes that make this addition, you should remove the lines, as
200they are not needed and might interfere with correct operation of
201postinstall scripts.
202
203.. _migration-1.5-images-now-rebuild-only-on-changes-instead-of-every-time:
204
205Images Now Rebuild Only on Changes Instead of Every Time
206--------------------------------------------------------
207
208The :ref:`ref-tasks-rootfs` and other related image
209construction tasks are no longer marked as "nostamp". Consequently, they
210will only be re-executed when their inputs have changed. Previous
211versions of the OpenEmbedded build system always rebuilt the image when
212requested rather when necessary.
213
214.. _migration-1.5-task-recipes:
215
216Task Recipes
217------------
218
219The previously deprecated ``task.bbclass`` has now been dropped. For
220recipes that previously inherited from this class, you should rename
221them from ``task-*`` to ``packagegroup-*`` and inherit packagegroup
222instead.
223
224For more information, see the
225":ref:`packagegroup.bbclass <ref-classes-packagegroup>`" section.
226
227.. _migration-1.5-busybox:
228
229BusyBox
230-------
231
232By default, we now split BusyBox into two binaries: one that is suid
233root for those components that need it, and another for the rest of the
234components. Splitting BusyBox allows for optimization that eliminates
235the ``tinylogin`` recipe as recommended by upstream. You can disable
236this split by setting
237:term:`BUSYBOX_SPLIT_SUID` to "0".
238
239.. _migration-1.5-automated-image-testing:
240
241Automated Image Testing
242-----------------------
243
244A new automated image testing framework has been added through the
245:ref:`testimage.bbclass <ref-classes-testimage*>` class. This
246framework replaces the older ``imagetest-qemu`` framework.
247
248You can learn more about performing automated image tests in the
249":ref:`dev-manual/common-tasks:performing automated runtime testing`"
250section in the Yocto Project Development Tasks Manual.
251
252.. _migration-1.5-build-history:
253
254Build History
255-------------
256
257Following are changes to Build History:
258
259- Installed package sizes: ``installed-package-sizes.txt`` for an image
260 now records the size of the files installed by each package instead
261 of the size of each compressed package archive file.
262
263- The dependency graphs (``depends*.dot``) now use the actual package
264 names instead of replacing dashes, dots and plus signs with
265 underscores.
266
267- The ``buildhistory-diff`` and ``buildhistory-collect-srcrevs``
268 utilities have improved command-line handling. Use the ``--help``
269 option for each utility for more information on the new syntax.
270
271For more information on Build History, see the
272":ref:`dev-manual/common-tasks:maintaining build output quality`"
273section in the Yocto Project Development Tasks Manual.
274
275.. _migration-1.5-udev:
276
277``udev``
278--------
279
280Following are changes to ``udev``:
281
282- ``udev`` no longer brings in ``udev-extraconf`` automatically through
283 :term:`RRECOMMENDS`, since this was originally
284 intended to be optional. If you need the extra rules, then add
285 ``udev-extraconf`` to your image.
286
287- ``udev`` no longer brings in ``pciutils-ids`` or ``usbutils-ids``
288 through ``RRECOMMENDS``. These are not needed by ``udev`` itself and
289 removing them saves around 350KB.
290
291.. _migration-1.5-removed-renamed-recipes:
292
293Removed and Renamed Recipes
294---------------------------
295
296- The ``linux-yocto`` 3.2 kernel has been removed.
297
298- ``libtool-nativesdk`` has been renamed to ``nativesdk-libtool``.
299
300- ``tinylogin`` has been removed. It has been replaced by a suid
301 portion of Busybox. See the "`BusyBox <#busybox>`__"
302 section for more information.
303
304- ``external-python-tarball`` has been renamed to
305 ``buildtools-tarball``.
306
307- ``web-webkit`` has been removed. It has been functionally replaced by
308 ``midori``.
309
310- ``imake`` has been removed. It is no longer needed by any other
311 recipe.
312
313- ``transfig-native`` has been removed. It is no longer needed by any
314 other recipe.
315
316- ``anjuta-remote-run`` has been removed. Anjuta IDE integration has
317 not been officially supported for several releases.
318
319.. _migration-1.5-other-changes:
320
321Other Changes
322-------------
323
324Following is a list of short entries describing other changes:
325
326- ``run-postinsts``: Make this generic.
327
328- ``base-files``: Remove the unnecessary ``media/``\ xxx directories.
329
330- ``alsa-state``: Provide an empty ``asound.conf`` by default.
331
332- ``classes/image``: Ensure
333 :term:`BAD_RECOMMENDATIONS` supports
334 pre-renamed package names.
335
336- ``classes/rootfs_rpm``: Implement ``BAD_RECOMMENDATIONS`` for RPM.
337
338- ``systemd``: Remove ``systemd_unitdir`` if ``systemd`` is not in
339 :term:`DISTRO_FEATURES`.
340
341- ``systemd``: Remove ``init.d`` dir if ``systemd`` unit file is
342 present and ``sysvinit`` is not a distro feature.
343
344- ``libpam``: Deny all services for the ``OTHER`` entries.
345
346- ``image.bbclass``: Move ``runtime_mapping_rename`` to avoid conflict
347 with ``multilib``. See :yocto_bugs:`YOCTO #4993 </show_bug.cgi?id=4993>`
348 in Bugzilla for more information.
349
350- ``linux-dtb``: Use kernel build system to generate the ``dtb`` files.
351
352- ``kern-tools``: Switch from guilt to new ``kgit-s2q`` tool.
353
diff --git a/documentation/ref-manual/migration-1.6.rst b/documentation/ref-manual/migration-1.6.rst
deleted file mode 100644
index ed155d0df9..0000000000
--- a/documentation/ref-manual/migration-1.6.rst
+++ /dev/null
@@ -1,416 +0,0 @@
1Moving to the Yocto Project 1.6 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 1.6 Release from the prior release.
6
7.. _migration-1.6-archiver-class:
8
9``archiver`` Class
10------------------
11
12The :ref:`archiver <ref-classes-archiver>` class has been rewritten
13and its configuration has been simplified. For more details on the
14source archiver, see the
15":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`"
16section in the Yocto Project Development Tasks Manual.
17
18.. _migration-1.6-packaging-changes:
19
20Packaging Changes
21-----------------
22
23The following packaging changes have been made:
24
25- The ``binutils`` recipe no longer produces a ``binutils-symlinks``
26 package. ``update-alternatives`` is now used to handle the preferred
27 ``binutils`` variant on the target instead.
28
29- The tc (traffic control) utilities have been split out of the main
30 ``iproute2`` package and put into the ``iproute2-tc`` package.
31
32- The ``gtk-engines`` schemas have been moved to a dedicated
33 ``gtk-engines-schemas`` package.
34
35- The ``armv7a`` with thumb package architecture suffix has changed.
36 The suffix for these packages with the thumb optimization enabled is
37 "t2" as it should be. Use of this suffix was not the case in the 1.5
38 release. Architecture names will change within package feeds as a
39 result.
40
41.. _migration-1.6-bitbake:
42
43BitBake
44-------
45
46The following changes have been made to :term:`BitBake`.
47
48.. _migration-1.6-matching-branch-requirement-for-git-fetching:
49
50Matching Branch Requirement for Git Fetching
51~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52
53When fetching source from a Git repository using
54:term:`SRC_URI`, BitBake will now validate the
55:term:`SRCREV` value against the branch. You can specify
56the branch using the following form:
57::
58
59 SRC_URI = "git://server.name/repository;branch=branchname"
60
61If you do not specify a branch, BitBake looks in the default "master" branch.
62
63Alternatively, if you need to bypass this check (e.g. if you are
64fetching a revision corresponding to a tag that is not on any branch),
65you can add ";nobranch=1" to the end of the URL within ``SRC_URI``.
66
67.. _migration-1.6-bitbake-deps:
68
69Python Definition substitutions
70~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71
72BitBake had some previously deprecated Python definitions within its
73``bb`` module removed. You should use their sub-module counterparts
74instead:
75
76- ``bb.MalformedUrl``: Use ``bb.fetch.MalformedUrl``.
77
78- ``bb.encodeurl``: Use ``bb.fetch.encodeurl``.
79
80- ``bb.decodeurl``: Use ``bb.fetch.decodeurl``
81
82- ``bb.mkdirhier``: Use ``bb.utils.mkdirhier``.
83
84- ``bb.movefile``: Use ``bb.utils.movefile``.
85
86- ``bb.copyfile``: Use ``bb.utils.copyfile``.
87
88- ``bb.which``: Use ``bb.utils.which``.
89
90- ``bb.vercmp_string``: Use ``bb.utils.vercmp_string``.
91
92- ``bb.vercmp``: Use ``bb.utils.vercmp``.
93
94.. _migration-1.6-bitbake-fetcher:
95
96SVK Fetcher
97~~~~~~~~~~~
98
99The SVK fetcher has been removed from BitBake.
100
101.. _migration-1.6-bitbake-console-output:
102
103Console Output Error Redirection
104~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
105
106The BitBake console UI will now output errors to ``stderr`` instead of
107``stdout``. Consequently, if you are piping or redirecting the output of
108``bitbake`` to somewhere else, and you wish to retain the errors, you
109will need to add ``2>&1`` (or something similar) to the end of your
110``bitbake`` command line.
111
112.. _migration-1.6-task-taskname-overrides:
113
114``task-``\ taskname Overrides
115~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116
117``task-``\ taskname overrides have been adjusted so that tasks whose
118names contain underscores have the underscores replaced by hyphens for
119the override so that they now function properly. For example, the task
120override for :ref:`ref-tasks-populate_sdk` is
121``task-populate-sdk``.
122
123.. _migration-1.6-variable-changes:
124
125Changes to Variables
126--------------------
127
128The following variables have changed. For information on the
129OpenEmbedded build system variables, see the ":doc:`/ref-manual/variables`" Chapter.
130
131.. _migration-1.6-variable-changes-TMPDIR:
132
133``TMPDIR``
134~~~~~~~~~~
135
136:term:`TMPDIR` can no longer be on an NFS mount. NFS does
137not offer full POSIX locking and inode consistency and can cause
138unexpected issues if used to store ``TMPDIR``.
139
140The check for this occurs on startup. If ``TMPDIR`` is detected on an
141NFS mount, an error occurs.
142
143.. _migration-1.6-variable-changes-PRINC:
144
145``PRINC``
146~~~~~~~~~
147
148The ``PRINC`` variable has been deprecated and triggers a warning if
149detected during a build. For :term:`PR` increments on changes,
150use the PR service instead. You can find out more about this service in
151the ":ref:`dev-manual/common-tasks:working with a pr service`"
152section in the Yocto Project Development Tasks Manual.
153
154.. _migration-1.6-variable-changes-IMAGE_TYPES:
155
156``IMAGE_TYPES``
157~~~~~~~~~~~~~~~
158
159The "sum.jffs2" option for :term:`IMAGE_TYPES` has
160been replaced by the "jffs2.sum" option, which fits the processing
161order.
162
163.. _migration-1.6-variable-changes-COPY_LIC_MANIFEST:
164
165``COPY_LIC_MANIFEST``
166~~~~~~~~~~~~~~~~~~~~~
167
168The :term:`COPY_LIC_MANIFEST` variable must now
169be set to "1" rather than any value in order to enable it.
170
171.. _migration-1.6-variable-changes-COPY_LIC_DIRS:
172
173``COPY_LIC_DIRS``
174~~~~~~~~~~~~~~~~~
175
176The :term:`COPY_LIC_DIRS` variable must now be set
177to "1" rather than any value in order to enable it.
178
179.. _migration-1.6-variable-changes-PACKAGE_GROUP:
180
181``PACKAGE_GROUP``
182~~~~~~~~~~~~~~~~~
183
184The ``PACKAGE_GROUP`` variable has been renamed to
185:term:`FEATURE_PACKAGES` to more accurately
186reflect its purpose. You can still use ``PACKAGE_GROUP`` but the
187OpenEmbedded build system produces a warning message when it encounters
188the variable.
189
190.. _migration-1.6-variable-changes-variable-entry-behavior:
191
192Preprocess and Post Process Command Variable Behavior
193~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194
195The following variables now expect a semicolon separated list of
196functions to call and not arbitrary shell commands:
197
198 - :term:`ROOTFS_PREPROCESS_COMMAND`
199 - :term:`ROOTFS_POSTPROCESS_COMMAND`
200 - :term:`SDK_POSTPROCESS_COMMAND`
201 - :term:`POPULATE_SDK_POST_TARGET_COMMAND`
202 - :term:`POPULATE_SDK_POST_HOST_COMMAND`
203 - :term:`IMAGE_POSTPROCESS_COMMAND`
204 - :term:`IMAGE_PREPROCESS_COMMAND`
205 - :term:`ROOTFS_POSTUNINSTALL_COMMAND`
206 - :term:`ROOTFS_POSTINSTALL_COMMAND`
207
208For
209migration purposes, you can simply wrap shell commands in a shell
210function and then call the function. Here is an example: ::
211
212 my_postprocess_function() {
213 echo "hello" > ${IMAGE_ROOTFS}/hello.txt
214 }
215 ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "
216
217.. _migration-1.6-package-test-ptest:
218
219Package Test (ptest)
220--------------------
221
222Package Tests (ptest) are built but not installed by default. For
223information on using Package Tests, see the
224":ref:`dev-manual/common-tasks:testing packages with ptest`"
225section in the Yocto Project Development Tasks Manual. For information on the
226``ptest`` class, see the ":ref:`ptest.bbclass <ref-classes-ptest>`"
227section.
228
229.. _migration-1.6-build-changes:
230
231Build Changes
232-------------
233
234Separate build and source directories have been enabled by default for
235selected recipes where it is known to work (a whitelist) and for all
236recipes that inherit the :ref:`cmake <ref-classes-cmake>` class. In
237future releases the :ref:`autotools <ref-classes-autotools>` class
238will enable a separate build directory by default as well. Recipes
239building Autotools-based software that fails to build with a separate
240build directory should be changed to inherit from the
241:ref:`autotools-brokensep <ref-classes-autotools>` class instead of
242the ``autotools`` or ``autotools_stage``\ classes.
243
244.. _migration-1.6-building-qemu-native:
245
246``qemu-native``
247---------------
248
249``qemu-native`` now builds without SDL-based graphical output support by
250default. The following additional lines are needed in your
251``local.conf`` to enable it:
252::
253
254 PACKAGECONFIG_pn-qemu-native = "sdl"
255 ASSUME_PROVIDED += "libsdl-native"
256
257.. note::
258
259 The default ``local.conf`` contains these statements. Consequently, if you
260 are building a headless system and using a default ``local.conf``
261 file, you will need comment these two lines out.
262
263.. _migration-1.6-core-image-basic:
264
265``core-image-basic``
266--------------------
267
268``core-image-basic`` has been renamed to ``core-image-full-cmdline``.
269
270In addition to ``core-image-basic`` being renamed,
271``packagegroup-core-basic`` has been renamed to
272``packagegroup-core-full-cmdline`` to match.
273
274.. _migration-1.6-licensing:
275
276Licensing
277---------
278
279The top-level ``LICENSE`` file has been changed to better describe the
280license of the various components of :term:`OpenEmbedded-Core (OE-Core)`. However,
281the licensing itself remains unchanged.
282
283Normally, this change would not cause any side-effects. However, some
284recipes point to this file within
285:term:`LIC_FILES_CHKSUM` (as
286``${COREBASE}/LICENSE``) and thus the accompanying checksum must be
287changed from 3f40d7994397109285ec7b81fdeb3b58 to
2884d92cd373abda3937c2bc47fbc49d690. A better alternative is to have
289``LIC_FILES_CHKSUM`` point to a file describing the license that is
290distributed with the source that the recipe is building, if possible,
291rather than pointing to ``${COREBASE}/LICENSE``.
292
293.. _migration-1.6-cflags-options:
294
295``CFLAGS`` Options
296------------------
297
298The "-fpermissive" option has been removed from the default
299:term:`CFLAGS` value. You need to take action on
300individual recipes that fail when building with this option. You need to
301either patch the recipes to fix the issues reported by the compiler, or
302you need to add "-fpermissive" to ``CFLAGS`` in the recipes.
303
304.. _migration-1.6-custom-images:
305
306Custom Image Output Types
307-------------------------
308
309Custom image output types, as selected using
310:term:`IMAGE_FSTYPES`, must declare their
311dependencies on other image types (if any) using a new
312:term:`IMAGE_TYPEDEP` variable.
313
314.. _migration-1.6-do-package-write-task:
315
316Tasks
317-----
318
319The ``do_package_write`` task has been removed. The task is no longer
320needed.
321
322.. _migration-1.6-update-alternatives-provider:
323
324``update-alternative`` Provider
325-------------------------------
326
327The default ``update-alternatives`` provider has been changed from
328``opkg`` to ``opkg-utils``. This change resolves some troublesome
329circular dependencies. The runtime package has also been renamed from
330``update-alternatives-cworth`` to ``update-alternatives-opkg``.
331
332.. _migration-1.6-virtclass-overrides:
333
334``virtclass`` Overrides
335-----------------------
336
337The ``virtclass`` overrides are now deprecated. Use the equivalent class
338overrides instead (e.g. ``virtclass-native`` becomes ``class-native``.)
339
340.. _migration-1.6-removed-renamed-recipes:
341
342Removed and Renamed Recipes
343---------------------------
344
345The following recipes have been removed:
346
347- ``packagegroup-toolset-native`` - This recipe is largely unused.
348
349- ``linux-yocto-3.8`` - Support for the Linux yocto 3.8 kernel has been
350 dropped. Support for the 3.10 and 3.14 kernels have been added with
351 the ``linux-yocto-3.10`` and ``linux-yocto-3.14`` recipes.
352
353- ``ocf-linux`` - This recipe has been functionally replaced using
354 ``cryptodev-linux``.
355
356- ``genext2fs`` - ``genext2fs`` is no longer used by the build system
357 and is unmaintained upstream.
358
359- ``js`` - This provided an ancient version of Mozilla's javascript
360 engine that is no longer needed.
361
362- ``zaurusd`` - The recipe has been moved to the ``meta-handheld``
363 layer.
364
365- ``eglibc 2.17`` - Replaced by the ``eglibc 2.19`` recipe.
366
367- ``gcc 4.7.2`` - Replaced by the now stable ``gcc 4.8.2``.
368
369- ``external-sourcery-toolchain`` - this recipe is now maintained in
370 the ``meta-sourcery`` layer.
371
372- ``linux-libc-headers-yocto 3.4+git`` - Now using version 3.10 of the
373 ``linux-libc-headers`` by default.
374
375- ``meta-toolchain-gmae`` - This recipe is obsolete.
376
377- ``packagegroup-core-sdk-gmae`` - This recipe is obsolete.
378
379- ``packagegroup-core-standalone-gmae-sdk-target`` - This recipe is
380 obsolete.
381
382.. _migration-1.6-removed-classes:
383
384Removed Classes
385---------------
386
387The following classes have become obsolete and have been removed:
388
389- ``module_strip``
390
391- ``pkg_metainfo``
392
393- ``pkg_distribute``
394
395- ``image-empty``
396
397.. _migration-1.6-reference-bsps:
398
399Reference Board Support Packages (BSPs)
400---------------------------------------
401
402The following reference BSPs changes occurred:
403
404- The BeagleBoard (``beagleboard``) ARM reference hardware has been
405 replaced by the BeagleBone (``beaglebone``) hardware.
406
407- The RouterStation Pro (``routerstationpro``) MIPS reference hardware
408 has been replaced by the EdgeRouter Lite (``edgerouter``) hardware.
409
410The previous reference BSPs for the ``beagleboard`` and
411``routerstationpro`` machines are still available in a new
412``meta-yocto-bsp-old`` layer in the
413:yocto_git:`Source Repositories <>` at
414:yocto_git:`/meta-yocto-bsp-old/`.
415
416
diff --git a/documentation/ref-manual/migration-1.7.rst b/documentation/ref-manual/migration-1.7.rst
deleted file mode 100644
index 54544e4798..0000000000
--- a/documentation/ref-manual/migration-1.7.rst
+++ /dev/null
@@ -1,223 +0,0 @@
1Moving to the Yocto Project 1.7 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 1.7 Release from the prior release.
6
7.. _migration-1.7-changes-to-setting-qemu-packageconfig-options:
8
9Changes to Setting QEMU ``PACKAGECONFIG`` Options in ``local.conf``
10-------------------------------------------------------------------
11
12The QEMU recipe now uses a number of
13:term:`PACKAGECONFIG` options to enable various
14optional features. The method used to set defaults for these options
15means that existing ``local.conf`` files will need to be be modified to
16append to ``PACKAGECONFIG`` for ``qemu-native`` and ``nativesdk-qemu``
17instead of setting it. In other words, to enable graphical output for
18QEMU, you should now have these lines in ``local.conf``:
19::
20
21 PACKAGECONFIG_append_pn-qemu-native = " sdl"
22 PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
23
24.. _migration-1.7-minimum-git-version:
25
26Minimum Git version
27-------------------
28
29The minimum :ref:`overview-manual/development-environment:git`
30version required on the
31build host is now 1.7.8 because the ``--list`` option is now required by
32BitBake's Git fetcher. As always, if your host distribution does not
33provide a version of Git that meets this requirement, you can use the
34``buildtools-tarball`` that does. See the
35":ref:`ref-manual/system-requirements:required git, tar, python and gcc versions`"
36section for more information.
37
38.. _migration-1.7-autotools-class-changes:
39
40Autotools Class Changes
41-----------------------
42
43The following :ref:`autotools <ref-classes-autotools>` class changes
44occurred:
45
46- *A separate build directory is now used by default:* The
47 ``autotools`` class has been changed to use a directory for building
48 (:term:`B`), which is separate from the source directory
49 (:term:`S`). This is commonly referred to as ``B != S``, or
50 an out-of-tree build.
51
52 If the software being built is already capable of building in a
53 directory separate from the source, you do not need to do anything.
54 However, if the software is not capable of being built in this
55 manner, you will need to either patch the software so that it can
56 build separately, or you will need to change the recipe to inherit
57 the :ref:`autotools-brokensep <ref-classes-autotools>` class
58 instead of the ``autotools`` or ``autotools_stage`` classes.
59
60- The ``--foreign`` option is no longer passed to ``automake`` when
61 running ``autoconf``: This option tells ``automake`` that a
62 particular software package does not follow the GNU standards and
63 therefore should not be expected to distribute certain files such as
64 ``ChangeLog``, ``AUTHORS``, and so forth. Because the majority of
65 upstream software packages already tell ``automake`` to enable
66 foreign mode themselves, the option is mostly superfluous. However,
67 some recipes will need patches for this change. You can easily make
68 the change by patching ``configure.ac`` so that it passes "foreign"
69 to ``AM_INIT_AUTOMAKE()``. See :oe_git:`this
70 commit </openembedded-core/commit/?id=01943188f85ce6411717fb5bf702d609f55813f2>`
71 for an example showing how to make the patch.
72
73.. _migration-1.7-binary-configuration-scripts-disabled:
74
75Binary Configuration Scripts Disabled
76-------------------------------------
77
78Some of the core recipes that package binary configuration scripts now
79disable the scripts due to the scripts previously requiring error-prone
80path substitution. Software that links against these libraries using
81these scripts should use the much more robust ``pkg-config`` instead.
82The list of recipes changed in this version (and their configuration
83scripts) is as follows:
84::
85
86 directfb (directfb-config)
87 freetype (freetype-config)
88 gpgme (gpgme-config)
89 libassuan (libassuan-config)
90 libcroco (croco-6.0-config)
91 libgcrypt (libgcrypt-config)
92 libgpg-error (gpg-error-config)
93 libksba (ksba-config)
94 libpcap (pcap-config)
95 libpcre (pcre-config)
96 libpng (libpng-config, libpng16-config)
97 libsdl (sdl-config)
98 libusb-compat (libusb-config)
99 libxml2 (xml2-config)
100 libxslt (xslt-config)
101 ncurses (ncurses-config)
102 neon (neon-config)
103 npth (npth-config)
104 pth (pth-config)
105 taglib (taglib-config)
106
107Additionally, support for ``pkg-config`` has been added to some recipes in the
108previous list in the rare cases where the upstream software package does
109not already provide it.
110
111.. _migration-1.7-glibc-replaces-eglibc:
112
113``eglibc 2.19`` Replaced with ``glibc 2.20``
114--------------------------------------------
115
116Because ``eglibc`` and ``glibc`` were already fairly close, this
117replacement should not require any significant changes to other software
118that links to ``eglibc``. However, there were a number of minor changes
119in ``glibc 2.20`` upstream that could require patching some software
120(e.g. the removal of the ``_BSD_SOURCE`` feature test macro).
121
122``glibc 2.20`` requires version 2.6.32 or greater of the Linux kernel.
123Thus, older kernels will no longer be usable in conjunction with it.
124
125For full details on the changes in ``glibc 2.20``, see the upstream
126release notes
127`here <https://sourceware.org/ml/libc-alpha/2014-09/msg00088.html>`__.
128
129.. _migration-1.7-kernel-module-autoloading:
130
131Kernel Module Autoloading
132-------------------------
133
134The :term:`module_autoload_* <module_autoload>` variable is now
135deprecated and a new
136:term:`KERNEL_MODULE_AUTOLOAD` variable
137should be used instead. Also, :term:`module_conf_* <module_conf>`
138must now be used in conjunction with a new
139:term:`KERNEL_MODULE_PROBECONF` variable.
140The new variables no longer require you to specify the module name as
141part of the variable name. This change not only simplifies usage but
142also allows the values of these variables to be appropriately
143incorporated into task signatures and thus trigger the appropriate tasks
144to re-execute when changed. You should replace any references to
145``module_autoload_*`` with ``KERNEL_MODULE_AUTOLOAD``, and add any
146modules for which ``module_conf_*`` is specified to
147``KERNEL_MODULE_PROBECONF``.
148
149.. _migration-1.7-qa-check-changes:
150
151QA Check Changes
152----------------
153
154The following changes have occurred to the QA check process:
155
156- Additional QA checks ``file-rdeps`` and ``build-deps`` have been
157 added in order to verify that file dependencies are satisfied (e.g.
158 package contains a script requiring ``/bin/bash``) and build-time
159 dependencies are declared, respectively. For more information, please
160 see the ":doc:`/ref-manual/qa-checks`" chapter.
161
162- Package QA checks are now performed during a new
163 :ref:`ref-tasks-package_qa` task rather than being
164 part of the :ref:`ref-tasks-package` task. This allows
165 more parallel execution. This change is unlikely to be an issue
166 except for highly customized recipes that disable packaging tasks
167 themselves by marking them as ``noexec``. For those packages, you
168 will need to disable the ``do_package_qa`` task as well.
169
170- Files being overwritten during the
171 :ref:`ref-tasks-populate_sysroot` task now
172 trigger an error instead of a warning. Recipes should not be
173 overwriting files written to the sysroot by other recipes. If you
174 have these types of recipes, you need to alter them so that they do
175 not overwrite these files.
176
177 You might now receive this error after changes in configuration or
178 metadata resulting in orphaned files being left in the sysroot. If
179 you do receive this error, the way to resolve the issue is to delete
180 your :term:`TMPDIR` or to move it out of the way and
181 then re-start the build. Anything that has been fully built up to
182 that point and does not need rebuilding will be restored from the
183 shared state cache and the rest of the build will be able to proceed
184 as normal.
185
186.. _migration-1.7-removed-recipes:
187
188Removed Recipes
189---------------
190
191The following recipes have been removed:
192
193- ``x-load``: This recipe has been superseded by U-Boot SPL for all
194 Cortex-based TI SoCs. For legacy boards, the ``meta-ti`` layer, which
195 contains a maintained recipe, should be used instead.
196
197- ``ubootchart``: This recipe is obsolete. A ``bootchart2`` recipe has
198 been added to functionally replace it.
199
200- ``linux-yocto 3.4``: Support for the linux-yocto 3.4 kernel has been
201 dropped. Support for the 3.10 and 3.14 kernels remains, while support
202 for version 3.17 has been added.
203
204- ``eglibc`` has been removed in favor of ``glibc``. See the
205 ":ref:`migration-1.7-glibc-replaces-eglibc`" section for more information.
206
207.. _migration-1.7-miscellaneous-changes:
208
209Miscellaneous Changes
210---------------------
211
212The following miscellaneous change occurred:
213
214- The build history feature now writes ``build-id.txt`` instead of
215 ``build-id``. Additionally, ``build-id.txt`` now contains the full
216 build header as printed by BitBake upon starting the build. You
217 should manually remove old "build-id" files from your existing build
218 history repositories to avoid confusion. For information on the build
219 history feature, see the
220 ":ref:`dev-manual/common-tasks:maintaining build output quality`"
221 section in the Yocto Project Development Tasks Manual.
222
223
diff --git a/documentation/ref-manual/migration-1.8.rst b/documentation/ref-manual/migration-1.8.rst
deleted file mode 100644
index 73789bd518..0000000000
--- a/documentation/ref-manual/migration-1.8.rst
+++ /dev/null
@@ -1,183 +0,0 @@
1Moving to the Yocto Project 1.8 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 1.8 Release from the prior release.
6
7.. _migration-1.8-removed-recipes:
8
9Removed Recipes
10---------------
11
12The following recipes have been removed:
13
14- ``owl-video``: Functionality replaced by ``gst-player``.
15
16- ``gaku``: Functionality replaced by ``gst-player``.
17
18- ``gnome-desktop``: This recipe is now available in ``meta-gnome`` and
19 is no longer needed.
20
21- ``gsettings-desktop-schemas``: This recipe is now available in
22 ``meta-gnome`` and is no longer needed.
23
24- ``python-argparse``: The ``argparse`` module is already provided in
25 the default Python distribution in a package named
26 ``python-argparse``. Consequently, the separate ``python-argparse``
27 recipe is no longer needed.
28
29- ``telepathy-python, libtelepathy, telepathy-glib, telepathy-idle, telepathy-mission-control``:
30 All these recipes have moved to ``meta-oe`` and are consequently no
31 longer needed by any recipes in OpenEmbedded-Core.
32
33- ``linux-yocto_3.10`` and ``linux-yocto_3.17``: Support for the
34 linux-yocto 3.10 and 3.17 kernels has been dropped. Support for the
35 3.14 kernel remains, while support for 3.19 kernel has been added.
36
37- ``poky-feed-config-opkg``: This recipe has become obsolete and is no
38 longer needed. Use ``distro-feed-config`` from ``meta-oe`` instead.
39
40- ``libav 0.8.x``: ``libav 9.x`` is now used.
41
42- ``sed-native``: No longer needed. A working version of ``sed`` is
43 expected to be provided by the host distribution.
44
45.. _migration-1.8-bluez:
46
47BlueZ 4.x / 5.x Selection
48-------------------------
49
50Proper built-in support for selecting BlueZ 5.x in preference to the
51default of 4.x now exists. To use BlueZ 5.x, simply add "bluez5" to your
52:term:`DISTRO_FEATURES` value. If you had
53previously added append files (``*.bbappend``) to make this selection,
54you can now remove them.
55
56Additionally, a ``bluetooth`` class has been added to make selection of
57the appropriate bluetooth support within a recipe a little easier. If
58you wish to make use of this class in a recipe, add something such as
59the following: ::
60
61 inherit bluetooth
62 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)}"
63 PACKAGECONFIG[bluez4] = "--enable-bluetooth,--disable-bluetooth,bluez4"
64 PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5"
65
66.. _migration-1.8-kernel-build-changes:
67
68Kernel Build Changes
69--------------------
70
71The kernel build process was changed to place the source in a common
72shared work area and to place build artifacts separately in the source
73code tree. In theory, migration paths have been provided for most common
74usages in kernel recipes but this might not work in all cases. In
75particular, users need to ensure that ``${S}`` (source files) and
76``${B}`` (build artifacts) are used correctly in functions such as
77:ref:`ref-tasks-configure` and
78:ref:`ref-tasks-install`. For kernel recipes that do not
79inherit from ``kernel-yocto`` or include ``linux-yocto.inc``, you might
80wish to refer to the ``linux.inc`` file in the ``meta-oe`` layer for the
81kinds of changes you need to make. For reference, here is the
82:oe_git:`commit </meta-openembedded/commit/meta-oe/recipes-kernel/linux/linux.inc?id=fc7132ede27ac67669448d3d2845ce7d46c6a1ee>`
83where the ``linux.inc`` file in ``meta-oe`` was updated.
84
85Recipes that rely on the kernel source code and do not inherit the
86module classes might need to add explicit dependencies on the
87``do_shared_workdir`` kernel task, for example: ::
88
89 do_configure[depends] += "virtual/kernel:do_shared_workdir"
90
91.. _migration-1.8-ssl:
92
93SSL 3.0 is Now Disabled in OpenSSL
94----------------------------------
95
96SSL 3.0 is now disabled when building OpenSSL. Disabling SSL 3.0 avoids
97any lingering instances of the POODLE vulnerability. If you feel you
98must re-enable SSL 3.0, then you can add an append file (``*.bbappend``)
99for the ``openssl`` recipe to remove "-no-ssl3" from
100:term:`EXTRA_OECONF`.
101
102.. _migration-1.8-default-sysroot-poisoning:
103
104Default Sysroot Poisoning
105-------------------------
106
107``gcc's`` default sysroot and include directories are now "poisoned". In
108other words, the sysroot and include directories are being redirected to
109a non-existent location in order to catch when host directories are
110being used due to the correct options not being passed. This poisoning
111applies both to the cross-compiler used within the build and to the
112cross-compiler produced in the SDK.
113
114If this change causes something in the build to fail, it almost
115certainly means the various compiler flags and commands are not being
116passed correctly to the underlying piece of software. In such cases, you
117need to take corrective steps.
118
119.. _migration-1.8-rebuild-improvements:
120
121Rebuild Improvements
122--------------------
123
124Changes have been made to the :ref:`base <ref-classes-base>`,
125:ref:`autotools <ref-classes-autotools>`, and
126:ref:`cmake <ref-classes-cmake>` classes to clean out generated files
127when the :ref:`ref-tasks-configure` task needs to be
128re-executed.
129
130One of the improvements is to attempt to run "make clean" during the
131``do_configure`` task if a ``Makefile`` exists. Some software packages
132do not provide a working clean target within their make files. If you
133have such recipes, you need to set
134:term:`CLEANBROKEN` to "1" within the recipe, for example: ::
135
136 CLEANBROKEN = "1"
137
138.. _migration-1.8-qa-check-and-validation-changes:
139
140QA Check and Validation Changes
141-------------------------------
142
143The following QA Check and Validation Changes have occurred:
144
145- Usage of ``PRINC`` previously triggered a warning. It now triggers an
146 error. You should remove any remaining usage of ``PRINC`` in any
147 recipe or append file.
148
149- An additional QA check has been added to detect usage of ``${D}`` in
150 :term:`FILES` values where :term:`D` values
151 should not be used at all. The same check ensures that ``$D`` is used
152 in ``pkg_preinst/pkg_postinst/pkg_prerm/pkg_postrm`` functions
153 instead of ``${D}``.
154
155- :term:`S` now needs to be set to a valid value within a
156 recipe. If ``S`` is not set in the recipe, the directory is not
157 automatically created. If ``S`` does not point to a directory that
158 exists at the time the :ref:`ref-tasks-unpack` task
159 finishes, a warning will be shown.
160
161- :term:`LICENSE` is now validated for correct
162 formatting of multiple licenses. If the format is invalid (e.g.
163 multiple licenses are specified with no operators to specify how the
164 multiple licenses interact), then a warning will be shown.
165
166.. _migration-1.8-miscellaneous-changes:
167
168Miscellaneous Changes
169---------------------
170
171The following miscellaneous changes have occurred:
172
173- The ``send-error-report`` script now expects a "-s" option to be
174 specified before the server address. This assumes a server address is
175 being specified.
176
177- The ``oe-pkgdata-util`` script now expects a "-p" option to be
178 specified before the ``pkgdata`` directory, which is now optional. If
179 the ``pkgdata`` directory is not specified, the script will run
180 BitBake to query :term:`PKGDATA_DIR` from the
181 build environment.
182
183
diff --git a/documentation/ref-manual/migration-2.0.rst b/documentation/ref-manual/migration-2.0.rst
deleted file mode 100644
index 4eea94887b..0000000000
--- a/documentation/ref-manual/migration-2.0.rst
+++ /dev/null
@@ -1,281 +0,0 @@
1Moving to the Yocto Project 2.0 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.0 Release from the prior release.
6
7.. _migration-2.0-gcc-5:
8
9GCC 5
10-----
11
12The default compiler is now GCC 5.2. This change has required fixes for
13compilation errors in a number of other recipes.
14
15One important example is a fix for when the Linux kernel freezes at boot
16time on ARM when built with GCC 5. If you are using your own kernel
17recipe or source tree and building for ARM, you will likely need to
18apply this
19`patch <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=a077224fd35b2f7fbc93f14cf67074fc792fbac2>`__.
20The standard ``linux-yocto`` kernel source tree already has a workaround
21for the same issue.
22
23For further details, see https://gcc.gnu.org/gcc-5/changes.html
24and the porting guide at
25https://gcc.gnu.org/gcc-5/porting_to.html.
26
27Alternatively, you can switch back to GCC 4.9 or 4.8 by setting
28``GCCVERSION`` in your configuration, as follows:
29::
30
31 GCCVERSION = "4.9%"
32
33.. _migration-2.0-Gstreamer-0.10-removed:
34
35Gstreamer 0.10 Removed
36----------------------
37
38Gstreamer 0.10 has been removed in favor of Gstreamer 1.x. As part of
39the change, recipes for Gstreamer 0.10 and related software are now
40located in ``meta-multimedia``. This change results in Qt4 having Phonon
41and Gstreamer support in QtWebkit disabled by default.
42
43.. _migration-2.0-removed-recipes:
44
45Removed Recipes
46---------------
47
48The following recipes have been moved or removed:
49
50- ``bluez4``: The recipe is obsolete and has been moved due to
51 ``bluez5`` becoming fully integrated. The ``bluez4`` recipe now
52 resides in ``meta-oe``.
53
54- ``gamin``: The recipe is obsolete and has been removed.
55
56- ``gnome-icon-theme``: The recipe's functionally has been replaced by
57 ``adwaita-icon-theme``.
58
59- Gstreamer 0.10 Recipes: Recipes for Gstreamer 0.10 have been removed
60 in favor of the recipes for Gstreamer 1.x.
61
62- ``insserv``: The recipe is obsolete and has been removed.
63
64- ``libunique``: The recipe is no longer used and has been moved to
65 ``meta-oe``.
66
67- ``midori``: The recipe's functionally has been replaced by
68 ``epiphany``.
69
70- ``python-gst``: The recipe is obsolete and has been removed since it
71 only contains bindings for Gstreamer 0.10.
72
73- ``qt-mobility``: The recipe is obsolete and has been removed since it
74 requires ``Gstreamer 0.10``, which has been replaced.
75
76- ``subversion``: All 1.6.x versions of this recipe have been removed.
77
78- ``webkit-gtk``: The older 1.8.3 version of this recipe has been
79 removed in favor of ``webkitgtk``.
80
81.. _migration-2.0-bitbake-datastore-improvements:
82
83BitBake datastore improvements
84------------------------------
85
86The method by which BitBake's datastore handles overrides has changed.
87Overrides are now applied dynamically and ``bb.data.update_data()`` is
88now a no-op. Thus, ``bb.data.update_data()`` is no longer required in
89order to apply the correct overrides. In practice, this change is
90unlikely to require any changes to Metadata. However, these minor
91changes in behavior exist:
92
93- All potential overrides are now visible in the variable history as
94 seen when you run the following:
95 ::
96
97 $ bitbake -e
98
99- ``d.delVar('VARNAME')`` and
100 ``d.setVar('VARNAME', None)`` result in the variable and all
101 of its overrides being cleared out. Before the change, only the
102 non-overridden values were cleared.
103
104.. _migration-2.0-shell-message-function-changes:
105
106Shell Message Function Changes
107------------------------------
108
109The shell versions of the BitBake message functions (i.e. ``bbdebug``,
110``bbnote``, ``bbwarn``, ``bbplain``, ``bberror``, and ``bbfatal``) are
111now connected through to their BitBake equivalents ``bb.debug()``,
112``bb.note()``, ``bb.warn()``, ``bb.plain()``, ``bb.error()``, and
113``bb.fatal()``, respectively. Thus, those message functions that you
114would expect to be printed by the BitBake UI are now actually printed.
115In practice, this change means two things:
116
117- If you now see messages on the console that you did not previously
118 see as a result of this change, you might need to clean up the calls
119 to ``bbwarn``, ``bberror``, and so forth. Or, you might want to
120 simply remove the calls.
121
122- The ``bbfatal`` message function now suppresses the full error log in
123 the UI, which means any calls to ``bbfatal`` where you still wish to
124 see the full error log should be replaced by ``die`` or
125 ``bbfatal_log``.
126
127.. _migration-2.0-extra-development-debug-package-cleanup:
128
129Extra Development/Debug Package Cleanup
130---------------------------------------
131
132The following recipes have had extra ``dev/dbg`` packages removed:
133
134- ``acl``
135
136- ``apmd``
137
138- ``aspell``
139
140- ``attr``
141
142- ``augeas``
143
144- ``bzip2``
145
146- ``cogl``
147
148- ``curl``
149
150- ``elfutils``
151
152- ``gcc-target``
153
154- ``libgcc``
155
156- ``libtool``
157
158- ``libxmu``
159
160- ``opkg``
161
162- ``pciutils``
163
164- ``rpm``
165
166- ``sysfsutils``
167
168- ``tiff``
169
170- ``xz``
171
172All of the above recipes now conform to the standard packaging scheme
173where a single ``-dev``, ``-dbg``, and ``-staticdev`` package exists per
174recipe.
175
176.. _migration-2.0-recipe-maintenance-tracking-data-moved-to-oe-core:
177
178Recipe Maintenance Tracking Data Moved to OE-Core
179-------------------------------------------------
180
181Maintenance tracking data for recipes that was previously part of
182``meta-yocto`` has been moved to :term:`OpenEmbedded-Core (OE-Core)`. The change
183includes ``package_regex.inc`` and ``distro_alias.inc``, which are
184typically enabled when using the ``distrodata`` class. Additionally, the
185contents of ``upstream_tracking.inc`` has now been split out to the
186relevant recipes.
187
188.. _migration-2.0-automatic-stale-sysroot-file-cleanup:
189
190Automatic Stale Sysroot File Cleanup
191------------------------------------
192
193Stale files from recipes that no longer exist in the current
194configuration are now automatically removed from sysroot as well as
195removed from any other place managed by shared state. This automatic
196cleanup means that the build system now properly handles situations such
197as renaming the build system side of recipes, removal of layers from
198``bblayers.conf``, and :term:`DISTRO_FEATURES`
199changes.
200
201Additionally, work directories for old versions of recipes are now
202pruned. If you wish to disable pruning old work directories, you can set
203the following variable in your configuration:
204::
205
206 SSTATE_PRUNE_OBSOLETEWORKDIR = "0"
207
208.. _migration-2.0-linux-yocto-kernel-metadata-repository-now-split-from-source:
209
210``linux-yocto`` Kernel Metadata Repository Now Split from Source
211----------------------------------------------------------------
212
213The ``linux-yocto`` tree has up to now been a combined set of kernel
214changes and configuration (meta) data carried in a single tree. While
215this format is effective at keeping kernel configuration and source
216modifications synchronized, it is not always obvious to developers how
217to manipulate the Metadata as compared to the source.
218
219Metadata processing has now been removed from the
220:ref:`kernel-yocto <ref-classes-kernel-yocto>` class and the external
221Metadata repository ``yocto-kernel-cache``, which has always been used
222to seed the ``linux-yocto`` "meta" branch. This separate ``linux-yocto``
223cache repository is now the primary location for this data. Due to this
224change, ``linux-yocto`` is no longer able to process combined trees.
225Thus, if you need to have your own combined kernel repository, you must
226do the split there as well and update your recipes accordingly. See the
227``meta/recipes-kernel/linux/linux-yocto_4.1.bb`` recipe for an example.
228
229.. _migration-2.0-additional-qa-checks:
230
231Additional QA checks
232--------------------
233
234The following QA checks have been added:
235
236- Added a "host-user-contaminated" check for ownership issues for
237 packaged files outside of ``/home``. The check looks for files that
238 are incorrectly owned by the user that ran BitBake instead of owned
239 by a valid user in the target system.
240
241- Added an "invalid-chars" check for invalid (non-UTF8) characters in
242 recipe metadata variable values (i.e.
243 :term:`DESCRIPTION`,
244 :term:`SUMMARY`, :term:`LICENSE`, and
245 :term:`SECTION`). Some package managers do not support
246 these characters.
247
248- Added an "invalid-packageconfig" check for any options specified in
249 :term:`PACKAGECONFIG` that do not match any
250 ``PACKAGECONFIG`` option defined for the recipe.
251
252.. _migration-2.0-miscellaneous:
253
254Miscellaneous Changes
255---------------------
256
257These additional changes exist:
258
259- ``gtk-update-icon-cache`` has been renamed to ``gtk-icon-utils``.
260
261- The ``tools-profile`` :term:`IMAGE_FEATURES`
262 item as well as its corresponding packagegroup and
263 ``packagegroup-core-tools-profile`` no longer bring in ``oprofile``.
264 Bringing in ``oprofile`` was originally added to aid compilation on
265 resource-constrained targets. However, this aid has not been widely
266 used and is not likely to be used going forward due to the more
267 powerful target platforms and the existence of better
268 cross-compilation tools.
269
270- The :term:`IMAGE_FSTYPES` variable's default
271 value now specifies ``ext4`` instead of ``ext3``.
272
273- All support for the ``PRINC`` variable has been removed.
274
275- The ``packagegroup-core-full-cmdline`` packagegroup no longer brings
276 in ``lighttpd`` due to the fact that bringing in ``lighttpd`` is not
277 really in line with the packagegroup's purpose, which is to add full
278 versions of command-line tools that by default are provided by
279 ``busybox``.
280
281
diff --git a/documentation/ref-manual/migration-2.1.rst b/documentation/ref-manual/migration-2.1.rst
deleted file mode 100644
index 861d04861b..0000000000
--- a/documentation/ref-manual/migration-2.1.rst
+++ /dev/null
@@ -1,436 +0,0 @@
1Moving to the Yocto Project 2.1 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.1 Release from the prior release.
6
7.. _migration-2.1-variable-expansion-in-python-functions:
8
9Variable Expansion in Python Functions
10--------------------------------------
11
12Variable expressions, such as ``${VARNAME}`` no longer expand
13automatically within Python functions. Suppressing expansion was done to
14allow Python functions to construct shell scripts or other code for
15situations in which you do not want such expressions expanded. For any
16existing code that relies on these expansions, you need to change the
17expansions to expand the value of individual variables through
18``d.getVar()``. To alternatively expand more complex expressions, use
19``d.expand()``.
20
21.. _migration-2.1-overrides-must-now-be-lower-case:
22
23Overrides Must Now be Lower-Case
24--------------------------------
25
26The convention for overrides has always been for them to be lower-case
27characters. This practice is now a requirement as BitBake's datastore
28now assumes lower-case characters in order to give a slight performance
29boost during parsing. In practical terms, this requirement means that
30anything that ends up in :term:`OVERRIDES` must now
31appear in lower-case characters (e.g. values for ``MACHINE``,
32``TARGET_ARCH``, ``DISTRO``, and also recipe names if
33``_pn-``\ recipename overrides are to be effective).
34
35.. _migration-2.1-expand-parameter-to-getvar-and-getvarflag-now-mandatory:
36
37Expand Parameter to ``getVar()`` and ``getVarFlag()`` is Now Mandatory
38----------------------------------------------------------------------
39
40The expand parameter to ``getVar()`` and ``getVarFlag()`` previously
41defaulted to False if not specified. Now, however, no default exists so
42one must be specified. You must change any ``getVar()`` calls that do
43not specify the final expand parameter to calls that do specify the
44parameter. You can run the following ``sed`` command at the base of a
45layer to make this change:
46::
47
48 sed -e 's:\(\.getVar([^,()]*\)):\1, False):g' -i `grep -ril getVar *`
49 sed -e 's:\(\.getVarFlag([^,()]*,[^,()]*\)):\1, False):g' -i `grep -ril getVarFlag *`
50
51.. note::
52
53 The reason for this change is that it prepares the way for changing
54 the default to True in a future Yocto Project release. This future
55 change is a much more sensible default than False. However, the
56 change needs to be made gradually as a sudden change of the default
57 would potentially cause side-effects that would be difficult to
58 detect.
59
60.. _migration-2.1-makefile-environment-changes:
61
62Makefile Environment Changes
63----------------------------
64
65:term:`EXTRA_OEMAKE` now defaults to "" instead of
66"-e MAKEFLAGS=". Setting ``EXTRA_OEMAKE`` to "-e MAKEFLAGS=" by default
67was a historical accident that has required many classes (e.g.
68``autotools``, ``module``) and recipes to override this default in order
69to work with sensible build systems. When upgrading to the release, you
70must edit any recipe that relies upon this old default by either setting
71``EXTRA_OEMAKE`` back to "-e MAKEFLAGS=" or by explicitly setting any
72required variable value overrides using ``EXTRA_OEMAKE``, which is
73typically only needed when a Makefile sets a default value for a
74variable that is inappropriate for cross-compilation using the "="
75operator rather than the "?=" operator.
76
77.. _migration-2.1-libexecdir-reverted-to-prefix-libexec:
78
79``libexecdir`` Reverted to ``${prefix}/libexec``
80------------------------------------------------
81
82The use of ``${libdir}/${BPN}`` as ``libexecdir`` is different as
83compared to all other mainstream distributions, which either uses
84``${prefix}/libexec`` or ``${libdir}``. The use is also contrary to the
85GNU Coding Standards (i.e.
86https://www.gnu.org/prep/standards/html_node/Directory-Variables.html)
87that suggest ``${prefix}/libexec`` and also notes that any
88package-specific nesting should be done by the package itself. Finally,
89having ``libexecdir`` change between recipes makes it very difficult for
90different recipes to invoke binaries that have been installed into
91``libexecdir``. The Filesystem Hierarchy Standard (i.e.
92https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s07.html) now
93recognizes the use of ``${prefix}/libexec/``, giving distributions the
94choice between ``${prefix}/lib`` or ``${prefix}/libexec`` without
95breaking FHS.
96
97.. _migration-2.1-ac-cv-sizeof-off-t-no-longer-cached-in-site-files:
98
99``ac_cv_sizeof_off_t`` is No Longer Cached in Site Files
100--------------------------------------------------------
101
102For recipes inheriting the :ref:`autotools <ref-classes-autotools>`
103class, ``ac_cv_sizeof_off_t`` is no longer cached in the site files for
104``autoconf``. The reason for this change is because the
105``ac_cv_sizeof_off_t`` value is not necessarily static per architecture
106as was previously assumed. Rather, the value changes based on whether
107large file support is enabled. For most software that uses ``autoconf``,
108this change should not be a problem. However, if you have a recipe that
109bypasses the standard :ref:`ref-tasks-configure` task
110from the ``autotools`` class and the software the recipe is building
111uses a very old version of ``autoconf``, the recipe might be incapable
112of determining the correct size of ``off_t`` during ``do_configure``.
113
114The best course of action is to patch the software as necessary to allow
115the default implementation from the ``autotools`` class to work such
116that ``autoreconf`` succeeds and produces a working configure script,
117and to remove the overridden ``do_configure`` task such that the default
118implementation does get used.
119
120.. _migration-2.1-image-generation-split-out-from-filesystem-generation:
121
122Image Generation is Now Split Out from Filesystem Generation
123------------------------------------------------------------
124
125Previously, for image recipes the :ref:`ref-tasks-rootfs`
126task assembled the filesystem and then from that filesystem generated
127images. With this Yocto Project release, image generation is split into
128separate :ref:`ref-tasks-image` tasks for clarity both in
129operation and in the code.
130
131For most cases, this change does not present any problems. However, if
132you have made customizations that directly modify the ``do_rootfs`` task
133or that mention ``do_rootfs``, you might need to update those changes.
134In particular, if you had added any tasks after ``do_rootfs``, you
135should make edits so that those tasks are after the
136:ref:`ref-tasks-image-complete` task rather than
137after ``do_rootfs`` so that the your added tasks run at the correct
138time.
139
140A minor part of this restructuring is that the post-processing
141definitions and functions have been moved from the
142:ref:`image <ref-classes-image>` class to the
143:ref:`rootfs-postcommands <ref-classes-rootfs*>` class. Functionally,
144however, they remain unchanged.
145
146.. _migration-2.1-removed-recipes:
147
148Removed Recipes
149---------------
150
151The following recipes have been removed in the 2.1 release:
152
153- ``gcc`` version 4.8: Versions 4.9 and 5.3 remain.
154
155- ``qt4``: All support for Qt 4.x has been moved out to a separate
156 ``meta-qt4`` layer because Qt 4 is no longer supported upstream.
157
158- ``x11vnc``: Moved to the ``meta-oe`` layer.
159
160- ``linux-yocto-3.14``: No longer supported.
161
162- ``linux-yocto-3.19``: No longer supported.
163
164- ``libjpeg``: Replaced by the ``libjpeg-turbo`` recipe.
165
166- ``pth``: Became obsolete.
167
168- ``liboil``: Recipe is no longer needed and has been moved to the
169 ``meta-multimedia`` layer.
170
171- ``gtk-theme-torturer``: Recipe is no longer needed and has been moved
172 to the ``meta-gnome`` layer.
173
174- ``gnome-mime-data``: Recipe is no longer needed and has been moved to
175 the ``meta-gnome`` layer.
176
177- ``udev``: Replaced by the ``eudev`` recipe for compatibility when
178 using ``sysvinit`` with newer kernels.
179
180- ``python-pygtk``: Recipe became obsolete.
181
182- ``adt-installer``: Recipe became obsolete. See the "`ADT
183 Removed <#adt-removed>`__" section for more
184 information.
185
186.. _migration-2.1-class-changes:
187
188Class Changes
189-------------
190
191The following classes have changed:
192
193- ``autotools_stage``: Removed because the
194 :ref:`autotools <ref-classes-autotools>` class now provides its
195 functionality. Recipes that inherited from ``autotools_stage`` should
196 now inherit from ``autotools`` instead.
197
198- ``boot-directdisk``: Merged into the ``image-vm`` class. The
199 ``boot-directdisk`` class was rarely directly used. Consequently,
200 this change should not cause any issues.
201
202- ``bootimg``: Merged into the
203 :ref:`image-live <ref-classes-image-live>` class. The ``bootimg``
204 class was rarely directly used. Consequently, this change should not
205 cause any issues.
206
207- ``packageinfo``: Removed due to its limited use by the Hob UI, which
208 has itself been removed.
209
210.. _migration-2.1-build-system-ui-changes:
211
212Build System User Interface Changes
213-----------------------------------
214
215The following changes have been made to the build system user interface:
216
217- *Hob GTK+-based UI*: Removed because it is unmaintained and based on
218 the outdated GTK+ 2 library. The Toaster web-based UI is much more
219 capable and is actively maintained. See the
220 ":ref:`toaster-manual/setup-and-use:using the toaster web interface`"
221 section in the Toaster User Manual for more information on this
222 interface.
223
224- *"puccho" BitBake UI*: Removed because is unmaintained and no longer
225 useful.
226
227.. _migration-2.1-adt-removed:
228
229ADT Removed
230-----------
231
232The Application Development Toolkit (ADT) has been removed because its
233functionality almost completely overlapped with the :ref:`standard
234SDK <sdk-manual/using:using the standard sdk>` and the
235:ref:`extensible SDK <sdk-manual/extensible:using the extensible sdk>`. For
236information on these SDKs and how to build and use them, see the
237:doc:`/sdk-manual/index` manual.
238
239.. note::
240
241 The Yocto Project Eclipse IDE Plug-in is still supported and is not
242 affected by this change.
243
244.. _migration-2.1-poky-reference-distribution-changes:
245
246Poky Reference Distribution Changes
247-----------------------------------
248
249The following changes have been made for the Poky distribution:
250
251- The ``meta-yocto`` layer has been renamed to ``meta-poky`` to better
252 match its purpose, which is to provide the Poky reference
253 distribution. The ``meta-yocto-bsp`` layer retains its original name
254 since it provides reference machines for the Yocto Project and it is
255 otherwise unrelated to Poky. References to ``meta-yocto`` in your
256 ``conf/bblayers.conf`` should automatically be updated, so you should
257 not need to change anything unless you are relying on this naming
258 elsewhere.
259
260- The :ref:`uninative <ref-classes-uninative>` class is now enabled
261 by default in Poky. This class attempts to isolate the build system
262 from the host distribution's C library and makes re-use of native
263 shared state artifacts across different host distributions practical.
264 With this class enabled, a tarball containing a pre-built C library
265 is downloaded at the start of the build.
266
267 The ``uninative`` class is enabled through the
268 ``meta/conf/distro/include/yocto-uninative.inc`` file, which for
269 those not using the Poky distribution, can include to easily enable
270 the same functionality.
271
272 Alternatively, if you wish to build your own ``uninative`` tarball,
273 you can do so by building the ``uninative-tarball`` recipe, making it
274 available to your build machines (e.g. over HTTP/HTTPS) and setting a
275 similar configuration as the one set by ``yocto-uninative.inc``.
276
277- Static library generation, for most cases, is now disabled by default
278 in the Poky distribution. Disabling this generation saves some build
279 time as well as the size used for build output artifacts.
280
281 Disabling this library generation is accomplished through a
282 ``meta/conf/distro/include/no-static-libs.inc``, which for those not
283 using the Poky distribution can easily include to enable the same
284 functionality.
285
286 Any recipe that needs to opt-out of having the "--disable-static"
287 option specified on the configure command line either because it is
288 not a supported option for the configure script or because static
289 libraries are needed should set the following variable:
290 ::
291
292 DISABLE_STATIC = ""
293
294- The separate ``poky-tiny`` distribution now uses the musl C library
295 instead of a heavily pared down ``glibc``. Using musl results in a
296 smaller distribution and facilitates much greater maintainability
297 because musl is designed to have a small footprint.
298
299 If you have used ``poky-tiny`` and have customized the ``glibc``
300 configuration you will need to redo those customizations with musl
301 when upgrading to the new release.
302
303.. _migration-2.1-packaging-changes:
304
305Packaging Changes
306-----------------
307
308The following changes have been made to packaging:
309
310- The ``runuser`` and ``mountpoint`` binaries, which were previously in
311 the main ``util-linux`` package, have been split out into the
312 ``util-linux-runuser`` and ``util-linux-mountpoint`` packages,
313 respectively.
314
315- The ``python-elementtree`` package has been merged into the
316 ``python-xml`` package.
317
318.. _migration-2.1-tuning-file-changes:
319
320Tuning File Changes
321-------------------
322
323The following changes have been made to the tuning files:
324
325- The "no-thumb-interwork" tuning feature has been dropped from the ARM
326 tune include files. Because interworking is required for ARM EABI,
327 attempting to disable it through a tuning feature no longer makes
328 sense.
329
330 .. note::
331
332 Support for ARM OABI was deprecated in gcc 4.7.
333
334- The ``tune-cortexm*.inc`` and ``tune-cortexr4.inc`` files have been
335 removed because they are poorly tested. Until the OpenEmbedded build
336 system officially gains support for CPUs without an MMU, these tuning
337 files would probably be better maintained in a separate layer if
338 needed.
339
340.. _migration-2.1-supporting-gobject-introspection:
341
342Supporting GObject Introspection
343--------------------------------
344
345This release supports generation of GLib Introspective Repository (GIR)
346files through GObject introspection, which is the standard mechanism for
347accessing GObject-based software from runtime environments. You can
348enable, disable, and test the generation of this data. See the
349":ref:`dev-manual/common-tasks:enabling gobject introspection support`"
350section in the Yocto Project Development Tasks Manual for more
351information.
352
353.. _migration-2.1-miscellaneous-changes:
354
355Miscellaneous Changes
356---------------------
357
358These additional changes exist:
359
360- The minimum Git version has been increased to 1.8.3.1. If your host
361 distribution does not provide a sufficiently recent version, you can
362 install the buildtools, which will provide it. See the
363 :ref:`ref-manual/system-requirements:required git, tar, python and gcc versions`
364 section for more information on the buildtools tarball.
365
366- The buggy and incomplete support for the RPM version 4 package
367 manager has been removed. The well-tested and maintained support for
368 RPM version 5 remains.
369
370- Previously, the following list of packages were removed if
371 package-management was not in
372 :term:`IMAGE_FEATURES`, regardless of any
373 dependencies:
374 ::
375
376 update-rc.d
377 base-passwd
378 shadow
379 update-alternatives
380 run-postinsts
381
382 With the Yocto Project 2.1 release, these packages are
383 only removed if "read-only-rootfs" is in ``IMAGE_FEATURES``, since
384 they might still be needed for a read-write image even in the absence
385 of a package manager (e.g. if users need to be added, modified, or
386 removed at runtime).
387
388- The
389 :ref:`devtool modify <sdk-manual/extensible:use \`\`devtool modify\`\` to modify the source of an existing component>`
390 command now defaults to extracting the source since that is most
391 commonly expected. The "-x" or "--extract" options are now no-ops. If
392 you wish to provide your own existing source tree, you will now need
393 to specify either the "-n" or "--no-extract" options when running
394 ``devtool modify``.
395
396- If the formfactor for a machine is either not supplied or does not
397 specify whether a keyboard is attached, then the default is to assume
398 a keyboard is attached rather than assume no keyboard. This change
399 primarily affects the Sato UI.
400
401- The ``.debug`` directory packaging is now automatic. If your recipe
402 builds software that installs binaries into directories other than
403 the standard ones, you no longer need to take care of setting
404 ``FILES_${PN}-dbg`` to pick up the resulting ``.debug`` directories
405 as these directories are automatically found and added.
406
407- Inaccurate disk and CPU percentage data has been dropped from
408 ``buildstats`` output. This data has been replaced with
409 ``getrusage()`` data and corrected IO statistics. You will probably
410 need to update any custom code that reads the ``buildstats`` data.
411
412- The ``meta/conf/distro/include/package_regex.inc`` is now deprecated.
413 The contents of this file have been moved to individual recipes.
414
415 .. note::
416
417 Because this file will likely be removed in a future Yocto Project
418 release, it is suggested that you remove any references to the
419 file that might be in your configuration.
420
421- The ``v86d/uvesafb`` has been removed from the ``genericx86`` and
422 ``genericx86-64`` reference machines, which are provided by the
423 ``meta-yocto-bsp`` layer. Most modern x86 boards do not rely on this
424 file and it only adds kernel error messages during startup. If you do
425 still need to support ``uvesafb``, you can simply add ``v86d`` to
426 your image.
427
428- Build sysroot paths are now removed from debug symbol files. Removing
429 these paths means that remote GDB using an unstripped build system
430 sysroot will no longer work (although this was never documented to
431 work). The supported method to accomplish something similar is to set
432 ``IMAGE_GEN_DEBUGFS`` to "1", which will generate a companion debug
433 image containing unstripped binaries and associated debug sources
434 alongside the image.
435
436
diff --git a/documentation/ref-manual/migration-2.2.rst b/documentation/ref-manual/migration-2.2.rst
deleted file mode 100644
index 5c6fecf328..0000000000
--- a/documentation/ref-manual/migration-2.2.rst
+++ /dev/null
@@ -1,450 +0,0 @@
1Moving to the Yocto Project 2.2 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.2 Release from the prior release.
6
7.. _migration-2.2-minimum-kernel-version:
8
9Minimum Kernel Version
10----------------------
11
12The minimum kernel version for the target system and for SDK is now
133.2.0, due to the upgrade to ``glibc 2.24``. Specifically, for
14AArch64-based targets the version is 3.14. For Nios II-based targets,
15the minimum kernel version is 3.19.
16
17.. note::
18
19 For x86 and x86_64, you can reset :term:`OLDEST_KERNEL`
20 to anything down to 2.6.32 if desired.
21
22.. _migration-2.2-staging-directories-in-sysroot-simplified:
23
24Staging Directories in Sysroot Has Been Simplified
25--------------------------------------------------
26
27The way directories are staged in sysroot has been simplified and
28introduces the new :term:`SYSROOT_DIRS`,
29:term:`SYSROOT_DIRS_NATIVE`, and
30:term:`SYSROOT_DIRS_BLACKLIST`. See the
31:oe_lists:`v2 patch series on the OE-Core Mailing List
32</pipermail/openembedded-core/2016-May/121365.html>`
33for additional information.
34
35.. _migration-2.2-removal-of-old-images-from-tmp-deploy-now-enabled:
36
37Removal of Old Images and Other Files in ``tmp/deploy`` Now Enabled
38-------------------------------------------------------------------
39
40Removal of old images and other files in ``tmp/deploy/`` is now enabled
41by default due to a new staging method used for those files. As a result
42of this change, the ``RM_OLD_IMAGE`` variable is now redundant.
43
44.. _migration-2.2-python-changes:
45
46Python Changes
47--------------
48
49The following changes for Python occurred:
50
51.. _migration-2.2-bitbake-now-requires-python-3.4:
52
53BitBake Now Requires Python 3.4+
54~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55
56BitBake requires Python 3.4 or greater.
57
58.. _migration-2.2-utf-8-locale-required-on-build-host:
59
60UTF-8 Locale Required on Build Host
61~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62
63A UTF-8 locale is required on the build host due to Python 3. Since
64C.UTF-8 is not a standard, the default is en_US.UTF-8.
65
66.. _migration-2.2-metadata-now-must-use-python-3-syntax:
67
68Metadata Must Now Use Python 3 Syntax
69~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70
71The metadata is now required to use Python 3 syntax. For help preparing
72metadata, see any of the many Python 3 porting guides available.
73Alternatively, you can reference the conversion commits for Bitbake and
74you can use :term:`OpenEmbedded-Core (OE-Core)` as a guide for changes. Following are
75particular areas of interest:
76
77 - subprocess command-line pipes needing locale decoding
78
79 - the syntax for octal values changed
80
81 - the ``iter*()`` functions changed name
82
83 - iterators now return views, not lists
84
85 - changed names for Python modules
86
87.. _migration-2.2-target-python-recipes-switched-to-python-3:
88
89Target Python Recipes Switched to Python 3
90~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91
92Most target Python recipes have now been switched to Python 3.
93Unfortunately, systems using RPM as a package manager and providing
94online package-manager support through SMART still require Python 2.
95
96.. note::
97
98 Python 2 and recipes that use it can still be built for the target as
99 with previous versions.
100
101.. _migration-2.2-buildtools-tarball-includes-python-3:
102
103``buildtools-tarball`` Includes Python 3
104~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
105
106``buildtools-tarball`` now includes Python 3.
107
108.. _migration-2.2-uclibc-replaced-by-musl:
109
110uClibc Replaced by musl
111-----------------------
112
113uClibc has been removed in favor of musl. Musl has matured, is better
114maintained, and is compatible with a wider range of applications as
115compared to uClibc.
116
117.. _migration-2.2-B-no-longer-default-working-directory-for-tasks:
118
119``${B}`` No Longer Default Working Directory for Tasks
120------------------------------------------------------
121
122``${``\ :term:`B`\ ``}`` is no longer the default working
123directory for tasks. Consequently, any custom tasks you define now need
124to either have the
125``[``\ :ref:`dirs <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` flag
126set, or the task needs to change into the appropriate working directory
127manually (e.g using ``cd`` for a shell task).
128
129.. note::
130
131 The preferred method is to use the
132 [dirs]
133 flag.
134
135.. _migration-2.2-runqemu-ported-to-python:
136
137``runqemu`` Ported to Python
138----------------------------
139
140``runqemu`` has been ported to Python and has changed behavior in some
141cases. Previous usage patterns continue to be supported.
142
143The new ``runqemu`` is a Python script. Machine knowledge is no longer
144hardcoded into ``runqemu``. You can choose to use the ``qemuboot``
145configuration file to define the BSP's own arguments and to make it
146bootable with ``runqemu``. If you use a configuration file, use the
147following form:
148::
149
150 image-name-machine.qemuboot.conf
151
152The configuration file
153enables fine-grained tuning of options passed to QEMU without the
154``runqemu`` script hard-coding any knowledge about different machines.
155Using a configuration file is particularly convenient when trying to use
156QEMU with machines other than the ``qemu*`` machines in
157:term:`OpenEmbedded-Core (OE-Core)`. The ``qemuboot.conf`` file is generated by the
158``qemuboot`` class when the root filesystem is being build (i.e. build
159rootfs). QEMU boot arguments can be set in BSP's configuration file and
160the ``qemuboot`` class will save them to ``qemuboot.conf``.
161
162If you want to use ``runqemu`` without a configuration file, use the
163following command form:
164::
165
166 $ runqemu machine rootfs kernel [options]
167
168Supported machines are as follows:
169
170 - qemuarm
171 - qemuarm64
172 - qemux86
173 - qemux86-64
174 - qemuppc
175 - qemumips
176 - qemumips64
177 - qemumipsel
178 - qemumips64el
179
180Consider the
181following example, which uses the ``qemux86-64`` machine, provides a
182root filesystem, provides an image, and uses the ``nographic`` option: ::
183
184 $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.ext4 tmp/deploy/images/qemux86-64/bzImage nographic
185
186Following is a list of variables that can be set in configuration files
187such as ``bsp.conf`` to enable the BSP to be booted by ``runqemu``:
188
189.. note::
190
191 "QB" means "QEMU Boot".
192
193::
194
195 QB_SYSTEM_NAME: QEMU name (e.g. "qemu-system-i386")
196 QB_OPT_APPEND: Options to append to QEMU (e.g. "-show-cursor")
197 QB_DEFAULT_KERNEL: Default kernel to boot (e.g. "bzImage")
198 QB_DEFAULT_FSTYPE: Default FSTYPE to boot (e.g. "ext4")
199 QB_MEM: Memory (e.g. "-m 512")
200 QB_MACHINE: QEMU machine (e.g. "-machine virt")
201 QB_CPU: QEMU cpu (e.g. "-cpu qemu32")
202 QB_CPU_KVM: Similar to QB_CPU except used for kvm support (e.g. "-cpu kvm64")
203 QB_KERNEL_CMDLINE_APPEND: Options to append to the kernel's -append
204 option (e.g. "console=ttyS0 console=tty")
205 QB_DTB: QEMU dtb name
206 QB_AUDIO_DRV: QEMU audio driver (e.g. "alsa", set it when support audio)
207 QB_AUDIO_OPT: QEMU audio option (e.g. "-soundhw ac97,es1370"), which is used
208 when QB_AUDIO_DRV is set.
209 QB_KERNEL_ROOT: Kernel's root (e.g. /dev/vda)
210 QB_TAP_OPT: Network option for 'tap' mode (e.g.
211 "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0").
212 runqemu will replace "@TAP@" with the one that is used, such as tap0, tap1 ...
213 QB_SLIRP_OPT: Network option for SLIRP mode (e.g. "-netdev user,id=net0 -device virtio-net-device,netdev=net0")
214 QB_ROOTFS_OPT: Used as rootfs (e.g.
215 "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0").
216 runqemu will replace "@ROOTFS@" with the one which is used, such as
217 core-image-minimal-qemuarm64.ext4.
218 QB_SERIAL_OPT: Serial port (e.g. "-serial mon:stdio")
219 QB_TCPSERIAL_OPT: tcp serial port option (e.g.
220 " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
221 runqemu will replace "@PORT@" with the port number which is used.
222
223To use ``runqemu``, set :term:`IMAGE_CLASSES` as
224follows and run ``runqemu``:
225
226.. note::
227
228 For command-line syntax, use ``runqemu help``.
229
230::
231
232 IMAGE_CLASSES += "qemuboot"
233
234.. _migration-2.2-default-linker-hash-style-changed:
235
236Default Linker Hash Style Changed
237---------------------------------
238
239The default linker hash style for ``gcc-cross`` is now "sysv" in order
240to catch recipes that are building software without using the
241OpenEmbedded :term:`LDFLAGS`. This change could result in
242seeing some "No GNU_HASH in the elf binary" QA issues when building such
243recipes. You need to fix these recipes so that they use the expected
244``LDFLAGS``. Depending on how the software is built, the build system
245used by the software (e.g. a Makefile) might need to be patched.
246However, sometimes making this fix is as simple as adding the following
247to the recipe:
248::
249
250 TARGET_CC_ARCH += "${LDFLAGS}"
251
252.. _migration-2.2-kernel-image-base-name-no-longer-uses-kernel-imagetype:
253
254``KERNEL_IMAGE_BASE_NAME`` no Longer Uses ``KERNEL_IMAGETYPE``
255--------------------------------------------------------------
256
257The ``KERNEL_IMAGE_BASE_NAME`` variable no longer uses the
258:term:`KERNEL_IMAGETYPE` variable to create the
259image's base name. Because the OpenEmbedded build system can now build
260multiple kernel image types, this part of the kernel image base name as
261been removed leaving only the following:
262::
263
264 KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
265
266If you have recipes or
267classes that use ``KERNEL_IMAGE_BASE_NAME`` directly, you might need to
268update the references to ensure they continue to work.
269
270.. _migration-2.2-bitbake-changes:
271
272BitBake Changes
273---------------
274
275The following changes took place for BitBake:
276
277- The "goggle" UI and standalone image-writer tool have been removed as
278 they both require GTK+ 2.0 and were not being maintained.
279
280- The Perforce fetcher now supports :term:`SRCREV` for
281 specifying the source revision to use, be it
282 ``${``\ :term:`AUTOREV`\ ``}``, changelist number,
283 p4date, or label, in preference to separate
284 :term:`SRC_URI` parameters to specify these. This
285 change is more in-line with how the other fetchers work for source
286 control systems. Recipes that fetch from Perforce will need to be
287 updated to use ``SRCREV`` in place of specifying the source revision
288 within ``SRC_URI``.
289
290- Some of BitBake's internal code structures for accessing the recipe
291 cache needed to be changed to support the new multi-configuration
292 functionality. These changes will affect external tools that use
293 BitBake's tinfoil module. For information on these changes, see the
294 changes made to the scripts supplied with OpenEmbedded-Core:
295 :yocto_git:`1 </poky/commit/?id=189371f8393971d00bca0fceffd67cc07784f6ee>`
296 and
297 :yocto_git:`2 </poky/commit/?id=4a5aa7ea4d07c2c90a1654b174873abb018acc67>`.
298
299- The task management code has been rewritten to avoid using ID
300 indirection in order to improve performance. This change is unlikely
301 to cause any problems for most users. However, the setscene
302 verification function as pointed to by
303 ``BB_SETSCENE_VERIFY_FUNCTION`` needed to change signature.
304 Consequently, a new variable named ``BB_SETSCENE_VERIFY_FUNCTION2``
305 has been added allowing multiple versions of BitBake to work with
306 suitably written metadata, which includes OpenEmbedded-Core and Poky.
307 Anyone with custom BitBake task scheduler code might also need to
308 update the code to handle the new structure.
309
310.. _migration-2.2-swabber-has-been-removed:
311
312Swabber has Been Removed
313------------------------
314
315Swabber, a tool that was intended to detect host contamination in the
316build process, has been removed, as it has been unmaintained and unused
317for some time and was never particularly effective. The OpenEmbedded
318build system has since incorporated a number of mechanisms including
319enhanced QA checks that mean that there is less of a need for such a
320tool.
321
322.. _migration-2.2-removed-recipes:
323
324Removed Recipes
325---------------
326
327The following recipes have been removed:
328
329- ``augeas``: No longer needed and has been moved to ``meta-oe``.
330
331- ``directfb``: Unmaintained and has been moved to ``meta-oe``.
332
333- ``gcc``: Removed 4.9 version. Versions 5.4 and 6.2 are still present.
334
335- ``gnome-doc-utils``: No longer needed.
336
337- ``gtk-doc-stub``: Replaced by ``gtk-doc``.
338
339- ``gtk-engines``: No longer needed and has been moved to
340 ``meta-gnome``.
341
342- ``gtk-sato-engine``: Became obsolete.
343
344- ``libglade``: No longer needed and has been moved to ``meta-oe``.
345
346- ``libmad``: Unmaintained and functionally replaced by ``libmpg123``.
347 ``libmad`` has been moved to ``meta-oe``.
348
349- ``libowl``: Became obsolete.
350
351- ``libxsettings-client``: No longer needed.
352
353- ``oh-puzzles``: Functionally replaced by ``puzzles``.
354
355- ``oprofileui``: Became obsolete. OProfile has been largely supplanted
356 by perf.
357
358- ``packagegroup-core-directfb.bb``: Removed.
359
360- ``core-image-directfb.bb``: Removed.
361
362- ``pointercal``: No longer needed and has been moved to ``meta-oe``.
363
364- ``python-imaging``: No longer needed and moved to ``meta-python``
365
366- ``python-pyrex``: No longer needed and moved to ``meta-python``.
367
368- ``sato-icon-theme``: Became obsolete.
369
370- ``swabber-native``: Swabber has been removed. See the `entry on
371 Swabber <#swabber-has-been-removed>`__.
372
373- ``tslib``: No longer needed and has been moved to ``meta-oe``.
374
375- ``uclibc``: Removed in favor of musl.
376
377- ``xtscal``: No longer needed and moved to ``meta-oe``
378
379.. _migration-2.2-removed-classes:
380
381Removed Classes
382---------------
383
384The following classes have been removed:
385
386- ``distutils-native-base``: No longer needed.
387
388- ``distutils3-native-base``: No longer needed.
389
390- ``sdl``: Only set :term:`DEPENDS` and
391 :term:`SECTION`, which are better set within the
392 recipe instead.
393
394- ``sip``: Mostly unused.
395
396- ``swabber``: See the `entry on
397 Swabber <#swabber-has-been-removed>`__.
398
399.. _migration-2.2-minor-packaging-changes:
400
401Minor Packaging Changes
402-----------------------
403
404The following minor packaging changes have occurred:
405
406- ``grub``: Split ``grub-editenv`` into its own package.
407
408- ``systemd``: Split container and vm related units into a new package,
409 systemd-container.
410
411- ``util-linux``: Moved ``prlimit`` to a separate
412 ``util-linux-prlimit`` package.
413
414.. _migration-2.2-miscellaneous-changes:
415
416Miscellaneous Changes
417---------------------
418
419The following miscellaneous changes have occurred:
420
421- ``package_regex.inc``: Removed because the definitions
422 ``package_regex.inc`` previously contained have been moved to their
423 respective recipes.
424
425- Both ``devtool add`` and ``recipetool create`` now use a fixed
426 :term:`SRCREV` by default when fetching from a Git
427 repository. You can override this in either case to use
428 ``${``\ :term:`AUTOREV`\ ``}`` instead by using the
429 ``-a`` or ``DASHDASHautorev`` command-line option
430
431- ``distcc``: GTK+ UI is now disabled by default.
432
433- ``packagegroup-core-tools-testapps``: Removed Piglit.
434
435- ``image.bbclass``: Renamed COMPRESS(ION) to CONVERSION. This change
436 means that ``COMPRESSIONTYPES``, ``COMPRESS_DEPENDS`` and
437 ``COMPRESS_CMD`` are deprecated in favor of ``CONVERSIONTYPES``,
438 ``CONVERSION_DEPENDS`` and ``CONVERSION_CMD``. The ``COMPRESS*``
439 variable names will still work in the 2.2 release but metadata that
440 does not need to be backwards-compatible should be changed to use the
441 new names as the ``COMPRESS*`` ones will be removed in a future
442 release.
443
444- ``gtk-doc``: A full version of ``gtk-doc`` is now made available.
445 However, some old software might not be capable of using the current
446 version of ``gtk-doc`` to build documentation. You need to change
447 recipes that build such software so that they explicitly disable
448 building documentation with ``gtk-doc``.
449
450
diff --git a/documentation/ref-manual/migration-2.3.rst b/documentation/ref-manual/migration-2.3.rst
deleted file mode 100644
index 04b11daa7d..0000000000
--- a/documentation/ref-manual/migration-2.3.rst
+++ /dev/null
@@ -1,523 +0,0 @@
1Moving to the Yocto Project 2.3 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.3 Release from the prior release.
6
7.. _migration-2.3-recipe-specific-sysroots:
8
9Recipe-specific Sysroots
10------------------------
11
12The OpenEmbedded build system now uses one sysroot per recipe to resolve
13long-standing issues with configuration script auto-detection of
14undeclared dependencies. Consequently, you might find that some of your
15previously written custom recipes are missing declared dependencies,
16particularly those dependencies that are incidentally built earlier in a
17typical build process and thus are already likely to be present in the
18shared sysroot in previous releases.
19
20Consider the following:
21
22- *Declare Build-Time Dependencies:* Because of this new feature, you
23 must explicitly declare all build-time dependencies for your recipe.
24 If you do not declare these dependencies, they are not populated into
25 the sysroot for the recipe.
26
27- *Specify Pre-Installation and Post-Installation Native Tool
28 Dependencies:* You must specifically specify any special native tool
29 dependencies of ``pkg_preinst`` and ``pkg_postinst`` scripts by using
30 the :term:`PACKAGE_WRITE_DEPS` variable.
31 Specifying these dependencies ensures that these tools are available
32 if these scripts need to be run on the build host during the
33 :ref:`ref-tasks-rootfs` task.
34
35 As an example, see the ``dbus`` recipe. You will see that this recipe
36 has a ``pkg_postinst`` that calls ``systemctl`` if "systemd" is in
37 :term:`DISTRO_FEATURES`. In the example,
38 ``systemd-systemctl-native`` is added to ``PACKAGE_WRITE_DEPS``,
39 which is also conditional on "systemd" being in ``DISTRO_FEATURES``.
40
41- Examine Recipes that Use ``SSTATEPOSTINSTFUNCS``: You need to
42 examine any recipe that uses ``SSTATEPOSTINSTFUNCS`` and determine
43 steps to take.
44
45 Functions added to ``SSTATEPOSTINSTFUNCS`` are still called as they
46 were in previous Yocto Project releases. However, since a separate
47 sysroot is now being populated for every recipe and if existing
48 functions being called through ``SSTATEPOSTINSTFUNCS`` are doing
49 relocation, then you will need to change these to use a
50 post-installation script that is installed by a function added to
51 :term:`SYSROOT_PREPROCESS_FUNCS`.
52
53 For an example, see the ``pixbufcache`` class in ``meta/classes/`` in
54 the :ref:`overview-manual/development-environment:yocto project source repositories`.
55
56 .. note::
57
58 The
59 SSTATEPOSTINSTFUNCS
60 variable itself is now deprecated in favor of the
61 do_populate_sysroot[postfuncs]
62 task. Consequently, if you do still have any function or functions
63 that need to be called after the sysroot component is created for
64 a recipe, then you would be well advised to take steps to use a
65 post installation script as described previously. Taking these
66 steps prepares your code for when
67 SSTATEPOSTINSTFUNCS
68 is removed in a future Yocto Project release.
69
70- *Specify the Sysroot when Using Certain External Scripts:* Because
71 the shared sysroot is now gone, the scripts
72 ``oe-find-native-sysroot`` and ``oe-run-native`` have been changed
73 such that you need to specify which recipe's
74 :term:`STAGING_DIR_NATIVE` is used.
75
76.. note::
77
78 You can find more information on how recipe-specific sysroots work in
79 the ":ref:`ref-classes-staging`" section.
80
81.. _migration-2.3-path-variable:
82
83``PATH`` Variable
84-----------------
85
86Within the environment used to run build tasks, the environment variable
87``PATH`` is now sanitized such that the normal native binary paths
88(``/bin``, ``/sbin``, ``/usr/bin`` and so forth) are removed and a
89directory containing symbolic links linking only to the binaries from
90the host mentioned in the :term:`HOSTTOOLS` and
91:term:`HOSTTOOLS_NONFATAL` variables is added
92to ``PATH``.
93
94Consequently, any native binaries provided by the host that you need to
95call needs to be in one of these two variables at the configuration
96level.
97
98Alternatively, you can add a native recipe (i.e. ``-native``) that
99provides the binary to the recipe's :term:`DEPENDS`
100value.
101
102.. note::
103
104 PATH
105 is not sanitized in the same way within ``devshell``.
106 If it were, you would have difficulty running host tools for
107 development and debugging within the shell.
108
109.. _migration-2.3-scripts:
110
111Changes to Scripts
112------------------
113
114The following changes to scripts took place:
115
116- ``oe-find-native-sysroot``: The usage for the
117 ``oe-find-native-sysroot`` script has changed to the following:
118 ::
119
120 $ . oe-find-native-sysroot recipe
121
122 You must now supply a recipe for recipe
123 as part of the command. Prior to the Yocto Project 2.3 release, it
124 was not necessary to provide the script with the command.
125
126- ``oe-run-native``: The usage for the ``oe-run-native`` script has
127 changed to the following:
128 ::
129
130 $ oe-run-native native_recipe tool
131
132 You must
133 supply the name of the native recipe and the tool you want to run as
134 part of the command. Prior to the Yocto Project 2.3 release, it
135 was not necessary to provide the native recipe with the command.
136
137- ``cleanup-workdir``: The ``cleanup-workdir`` script has been
138 removed because the script was found to be deleting files it should
139 not have, which lead to broken build trees. Rather than trying to
140 delete portions of :term:`TMPDIR` and getting it wrong,
141 it is recommended that you delete ``TMPDIR`` and have it restored
142 from shared state (sstate) on subsequent builds.
143
144- ``wipe-sysroot``: The ``wipe-sysroot`` script has been removed as
145 it is no longer needed with recipe-specific sysroots.
146
147.. _migration-2.3-functions:
148
149Changes to Functions
150--------------------
151
152The previously deprecated ``bb.data.getVar()``, ``bb.data.setVar()``,
153and related functions have been removed in favor of ``d.getVar()``,
154``d.setVar()``, and so forth.
155
156You need to fix any references to these old functions.
157
158.. _migration-2.3-bitbake-changes:
159
160BitBake Changes
161---------------
162
163The following changes took place for BitBake:
164
165- *BitBake's Graphical Dependency Explorer UI Replaced:* BitBake's
166 graphical dependency explorer UI ``depexp`` was replaced by
167 ``taskexp`` ("Task Explorer"), which provides a graphical way of
168 exploring the ``task-depends.dot`` file. The data presented by Task
169 Explorer is much more accurate than the data that was presented by
170 ``depexp``. Being able to visualize the data is an often requested
171 feature as standard ``*.dot`` file viewers cannot usual cope with the
172 size of the ``task-depends.dot`` file.
173
174- *BitBake "-g" Output Changes:* The ``package-depends.dot`` and
175 ``pn-depends.dot`` files as previously generated using the
176 ``bitbake -g`` command have been removed. A ``recipe-depends.dot``
177 file is now generated as a collapsed version of ``task-depends.dot``
178 instead.
179
180 The reason for this change is because ``package-depends.dot`` and
181 ``pn-depends.dot`` largely date back to a time before task-based
182 execution and do not take into account task-level dependencies
183 between recipes, which could be misleading.
184
185- *Mirror Variable Splitting Changes:* Mirror variables including
186 :term:`MIRRORS`, :term:`PREMIRRORS`,
187 and :term:`SSTATE_MIRRORS` can now separate
188 values entirely with spaces. Consequently, you no longer need "\\n".
189 BitBake looks for pairs of values, which simplifies usage. There
190 should be no change required to existing mirror variable values
191 themselves.
192
193- *The Subversion (SVN) Fetcher Uses an "ssh" Parameter and Not an
194 "rsh" Parameter:* The SVN fetcher now takes an "ssh" parameter
195 instead of an "rsh" parameter. This new optional parameter is used
196 when the "protocol" parameter is set to "svn+ssh". You can only use
197 the new parameter to specify the ``ssh`` program used by SVN. The SVN
198 fetcher passes the new parameter through the ``SVN_SSH`` environment
199 variable during the :ref:`ref-tasks-fetch` task.
200
201 See the ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-fetching:subversion (svn) fetcher (\`\`svn://\`\`)`"
202 section in the BitBake
203 User Manual for additional information.
204
205- ``BB_SETSCENE_VERIFY_FUNCTION`` and ``BB_SETSCENE_VERIFY_FUNCTION2``
206 Removed: Because the mechanism they were part of is no longer
207 necessary with recipe-specific sysroots, the
208 ``BB_SETSCENE_VERIFY_FUNCTION`` and ``BB_SETSCENE_VERIFY_FUNCTION2``
209 variables have been removed.
210
211.. _migration-2.3-absolute-symlinks:
212
213Absolute Symbolic Links
214-----------------------
215
216Absolute symbolic links (symlinks) within staged files are no longer
217permitted and now trigger an error. Any explicit creation of symlinks
218can use the ``lnr`` script, which is a replacement for ``ln -r``.
219
220If the build scripts in the software that the recipe is building are
221creating a number of absolute symlinks that need to be corrected, you
222can inherit ``relative_symlinks`` within the recipe to turn those
223absolute symlinks into relative symlinks.
224
225.. _migration-2.3-gplv2-and-gplv3-moves:
226
227GPLv2 Versions of GPLv3 Recipes Moved
228-------------------------------------
229
230Older GPLv2 versions of GPLv3 recipes have moved to a separate
231``meta-gplv2`` layer.
232
233If you use :term:`INCOMPATIBLE_LICENSE` to
234exclude GPLv3 or set :term:`PREFERRED_VERSION`
235to substitute a GPLv2 version of a GPLv3 recipe, then you must add the
236``meta-gplv2`` layer to your configuration.
237
238.. note::
239
240 You can ``find meta-gplv2`` layer in the OpenEmbedded layer index at
241 :oe_layer:`/meta-gplv2`.
242
243These relocated GPLv2 recipes do not receive the same level of
244maintenance as other core recipes. The recipes do not get security fixes
245and upstream no longer maintains them. In fact, the upstream community
246is actively hostile towards people that use the old versions of the
247recipes. Moving these recipes into a separate layer both makes the
248different needs of the recipes clearer and clearly identifies the number
249of these recipes.
250
251.. note::
252
253 The long-term solution might be to move to BSD-licensed replacements
254 of the GPLv3 components for those that need to exclude GPLv3-licensed
255 components from the target system. This solution will be investigated
256 for future Yocto Project releases.
257
258.. _migration-2.3-package-management-changes:
259
260Package Management Changes
261--------------------------
262
263The following package management changes took place:
264
265- Smart package manager is replaced by DNF package manager. Smart has
266 become unmaintained upstream, is not ported to Python 3.x.
267 Consequently, Smart needed to be replaced. DNF is the only feasible
268 candidate.
269
270 The change in functionality is that the on-target runtime package
271 management from remote package feeds is now done with a different
272 tool that has a different set of command-line options. If you have
273 scripts that call the tool directly, or use its API, they need to be
274 fixed.
275
276 For more information, see the `DNF
277 Documentation <https://dnf.readthedocs.io/en/latest/>`__.
278
279- Rpm 5.x is replaced with Rpm 4.x. This is done for two major reasons:
280
281 - DNF is API-incompatible with Rpm 5.x and porting it and
282 maintaining the port is non-trivial.
283
284 - Rpm 5.x itself has limited maintenance upstream, and the Yocto
285 Project is one of the very few remaining users.
286
287- Berkeley DB 6.x is removed and Berkeley DB 5.x becomes the default:
288
289 - Version 6.x of Berkeley DB has largely been rejected by the open
290 source community due to its AGPLv3 license. As a result, most
291 mainstream open source projects that require DB are still
292 developed and tested with DB 5.x.
293
294 - In OE-core, the only thing that was requiring DB 6.x was Rpm 5.x.
295 Thus, no reason exists to continue carrying DB 6.x in OE-core.
296
297- ``createrepo`` is replaced with ``createrepo_c``.
298
299 ``createrepo_c`` is the current incarnation of the tool that
300 generates remote repository metadata. It is written in C as compared
301 to ``createrepo``, which is written in Python. ``createrepo_c`` is
302 faster and is maintained.
303
304- Architecture-independent RPM packages are "noarch" instead of "all".
305
306 This change was made because too many places in DNF/RPM4 stack
307 already make that assumption. Only the filenames and the architecture
308 tag has changed. Nothing else has changed in OE-core system,
309 particularly in the :ref:`allarch.bbclass <ref-classes-allarch>`
310 class.
311
312- Signing of remote package feeds using ``PACKAGE_FEED_SIGN`` is not
313 currently supported. This issue will be fully addressed in a future
314 Yocto Project release. See :yocto_bugs:`defect 11209 </show_bug.cgi?id=11209>`
315 for more information on a solution to package feed signing with RPM
316 in the Yocto Project 2.3 release.
317
318- OPKG now uses the libsolv backend for resolving package dependencies
319 by default. This is vastly superior to OPKG's internal ad-hoc solver
320 that was previously used. This change does have a small impact on
321 disk (around 500 KB) and memory footprint.
322
323 .. note::
324
325 For further details on this change, see the
326 :yocto_git:`commit message </poky/commit/?id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81>`.
327
328.. _migration-2.3-removed-recipes:
329
330Removed Recipes
331---------------
332
333The following recipes have been removed:
334
335- ``linux-yocto 4.8``: Version 4.8 has been removed. Versions 4.1
336 (LTSI), 4.4 (LTS), 4.9 (LTS/LTSI) and 4.10 are now present.
337
338- ``python-smartpm``: Functionally replaced by ``dnf``.
339
340- ``createrepo``: Replaced by the ``createrepo-c`` recipe.
341
342- ``rpmresolve``: No longer needed with the move to RPM 4 as RPM
343 itself is used instead.
344
345- ``gstreamer``: Removed the GStreamer Git version recipes as they
346 have been stale. ``1.10.``\ x recipes are still present.
347
348- ``alsa-conf-base``: Merged into ``alsa-conf`` since ``libasound``
349 depended on both. Essentially, no way existed to install only one of
350 these.
351
352- ``tremor``: Moved to ``meta-multimedia``. Fixed-integer Vorbis
353 decoding is not needed by current hardware. Thus, GStreamer's ivorbis
354 plugin has been disabled by default eliminating the need for the
355 ``tremor`` recipe in :term:`OpenEmbedded-Core (OE-Core)`.
356
357- ``gummiboot``: Replaced by ``systemd-boot``.
358
359.. _migration-2.3-wic-changes:
360
361Wic Changes
362-----------
363
364The following changes have been made to Wic:
365
366.. note::
367
368 For more information on Wic, see the
369 ":ref:`dev-manual/common-tasks:creating partitioned images using wic`"
370 section in the Yocto Project Development Tasks Manual.
371
372- *Default Output Directory Changed:* Wic's default output directory is
373 now the current directory by default instead of the unusual
374 ``/var/tmp/wic``.
375
376 The "-o" and "--outdir" options remain unchanged and are used to
377 specify your preferred output directory if you do not want to use the
378 default directory.
379
380- *fsimage Plug-in Removed:* The Wic fsimage plugin has been removed as
381 it duplicates functionality of the rawcopy plugin.
382
383.. _migration-2.3-qa-changes:
384
385QA Changes
386----------
387
388The following QA checks have changed:
389
390- ``unsafe-references-in-binaries``: The
391 ``unsafe-references-in-binaries`` QA check, which was disabled by
392 default, has now been removed. This check was intended to detect
393 binaries in ``/bin`` that link to libraries in ``/usr/lib`` and have
394 the case where the user has ``/usr`` on a separate filesystem to
395 ``/``.
396
397 The removed QA check was buggy. Additionally, ``/usr`` residing on a
398 separate partition from ``/`` is now a rare configuration.
399 Consequently, ``unsafe-references-in-binaries`` was removed.
400
401- ``file-rdeps``: The ``file-rdeps`` QA check is now an error by
402 default instead of a warning. Because it is an error instead of a
403 warning, you need to address missing runtime dependencies.
404
405 For additional information, see the
406 :ref:`insane <ref-classes-insane>` class and the
407 ":ref:`ref-manual/qa-checks:errors and warnings`" section.
408
409.. _migration-2.3-miscellaneous-changes:
410
411Miscellaneous Changes
412---------------------
413
414The following miscellaneous changes have occurred:
415
416- In this release, a number of recipes have been changed to ignore the
417 ``largefile`` :term:`DISTRO_FEATURES` item,
418 enabling large file support unconditionally. This feature has always
419 been enabled by default. Disabling the feature has not been widely
420 tested.
421
422 .. note::
423
424 Future releases of the Yocto Project will remove entirely the
425 ability to disable the
426 largefile
427 feature, which would make it unconditionally enabled everywhere.
428
429- If the :term:`DISTRO_VERSION` value contains
430 the value of the :term:`DATE` variable, which is the
431 default between Poky releases, the ``DATE`` value is explicitly
432 excluded from ``/etc/issue`` and ``/etc/issue.net``, which is
433 displayed at the login prompt, in order to avoid conflicts with
434 Multilib enabled. Regardless, the ``DATE`` value is inaccurate if the
435 ``base-files`` recipe is restored from shared state (sstate) rather
436 than rebuilt.
437
438 If you need the build date recorded in ``/etc/issue*`` or anywhere
439 else in your image, a better method is to define a post-processing
440 function to do it and have the function called from
441 :term:`ROOTFS_POSTPROCESS_COMMAND`.
442 Doing so ensures the value is always up-to-date with the created
443 image.
444
445- Dropbear's ``init`` script now disables DSA host keys by default.
446 This change is in line with the systemd service file, which supports
447 RSA keys only, and with recent versions of OpenSSH, which deprecates
448 DSA host keys.
449
450- The :ref:`buildhistory <ref-classes-buildhistory>` class now
451 correctly uses tabs as separators between all columns in
452 ``installed-package-sizes.txt`` in order to aid import into other
453 tools.
454
455- The ``USE_LDCONFIG`` variable has been replaced with the "ldconfig"
456 ``DISTRO_FEATURES`` feature. Distributions that previously set:
457 ::
458
459 USE_LDCONFIG = "0"
460
461 should now instead use the following:
462
463 ::
464
465 DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " ldconfig"
466
467- The default value of
468 :term:`COPYLEFT_LICENSE_INCLUDE` now
469 includes all versions of AGPL licenses in addition to GPL and LGPL.
470
471 .. note::
472
473 The default list is not intended to be guaranteed as a complete
474 safe list. You should seek legal advice based on what you are
475 distributing if you are unsure.
476
477- Kernel module packages are now suffixed with the kernel version in
478 order to allow module packages from multiple kernel versions to
479 co-exist on a target system. If you wish to return to the previous
480 naming scheme that does not include the version suffix, use the
481 following:
482 ::
483
484 KERNEL_MODULE_PACKAGE_SUFFIX = ""
485
486- Removal of ``libtool`` ``*.la`` files is now enabled by default. The
487 ``*.la`` files are not actually needed on Linux and relocating them
488 is an unnecessary burden.
489
490 If you need to preserve these ``.la`` files (e.g. in a custom
491 distribution), you must change
492 :term:`INHERIT_DISTRO` such that
493 "remove-libtool" is not included in the value.
494
495- Extensible SDKs built for GCC 5+ now refuse to install on a
496 distribution where the host GCC version is 4.8 or 4.9. This change
497 resulted from the fact that the installation is known to fail due to
498 the way the ``uninative`` shared state (sstate) package is built. See
499 the :ref:`uninative <ref-classes-uninative>` class for additional
500 information.
501
502- All native and nativesdk recipes now use a separate
503 ``DISTRO_FEATURES`` value instead of sharing the value used by
504 recipes for the target, in order to avoid unnecessary rebuilds.
505
506 The ``DISTRO_FEATURES`` for ``native`` recipes is
507 :term:`DISTRO_FEATURES_NATIVE` added to
508 an intersection of ``DISTRO_FEATURES`` and
509 :term:`DISTRO_FEATURES_FILTER_NATIVE`.
510
511 For nativesdk recipes, the corresponding variables are
512 :term:`DISTRO_FEATURES_NATIVESDK`
513 and
514 :term:`DISTRO_FEATURES_FILTER_NATIVESDK`.
515
516- The ``FILESDIR`` variable, which was previously deprecated and rarely
517 used, has now been removed. You should change any recipes that set
518 ``FILESDIR`` to set :term:`FILESPATH` instead.
519
520- The ``MULTIMACH_HOST_SYS`` variable has been removed as it is no
521 longer needed with recipe-specific sysroots.
522
523
diff --git a/documentation/ref-manual/migration-2.4.rst b/documentation/ref-manual/migration-2.4.rst
deleted file mode 100644
index 260b3204b6..0000000000
--- a/documentation/ref-manual/migration-2.4.rst
+++ /dev/null
@@ -1,327 +0,0 @@
1Moving to the Yocto Project 2.4 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.4 Release from the prior release.
6
7.. _migration-2.4-memory-resident-mode:
8
9Memory Resident Mode
10--------------------
11
12A persistent mode is now available in BitBake's default operation,
13replacing its previous "memory resident mode" (i.e.
14``oe-init-build-env-memres``). Now you only need to set
15:term:`BB_SERVER_TIMEOUT` to a timeout (in
16seconds) and BitBake's server stays resident for that amount of time
17between invocations. The ``oe-init-build-env-memres`` script has been
18removed since a separate environment setup script is no longer needed.
19
20.. _migration-2.4-packaging-changes:
21
22Packaging Changes
23-----------------
24
25This section provides information about packaging changes that have
26occurred:
27
28- ``python3`` Changes:
29
30 - The main "python3" package now brings in all of the standard
31 Python 3 distribution rather than a subset. This behavior matches
32 what is expected based on traditional Linux distributions. If you
33 wish to install a subset of Python 3, specify ``python-core`` plus
34 one or more of the individual packages that are still produced.
35
36 - ``python3``: The ``bz2.py``, ``lzma.py``, and
37 ``_compression.py`` scripts have been moved from the
38 ``python3-misc`` package to the ``python3-compression`` package.
39
40- ``binutils``: The ``libbfd`` library is now packaged in a separate
41 "libbfd" package. This packaging saves space when certain tools (e.g.
42 ``perf``) are installed. In such cases, the tools only need
43 ``libbfd`` rather than all the packages in ``binutils``.
44
45- ``util-linux`` Changes:
46
47 - The ``su`` program is now packaged in a separate "util-linux-su"
48 package, which is only built when "pam" is listed in the
49 :term:`DISTRO_FEATURES` variable.
50 ``util-linux`` should not be installed unless it is needed because
51 ``su`` is normally provided through the shadow file format. The
52 main ``util-linux`` package has runtime dependencies (i.e.
53 :term:`RDEPENDS`) on the ``util-linux-su`` package
54 when "pam" is in ``DISTRO_FEATURES``.
55
56 - The ``switch_root`` program is now packaged in a separate
57 "util-linux-switch-root" package for small initramfs images that
58 do not need the whole ``util-linux`` package or the busybox
59 binary, which are both much larger than ``switch_root``. The main
60 ``util-linux`` package has a recommended runtime dependency (i.e.
61 :term:`RRECOMMENDS`) on the
62 ``util-linux-switch-root`` package.
63
64 - The ``ionice`` program is now packaged in a separate
65 "util-linux-ionice" package. The main ``util-linux`` package has a
66 recommended runtime dependency (i.e. ``RRECOMMENDS``) on the
67 ``util-linux-ionice`` package.
68
69- ``initscripts``: The ``sushell`` program is now packaged in a
70 separate "initscripts-sushell" package. This packaging change allows
71 systems to pull ``sushell`` in when ``selinux`` is enabled. The
72 change also eliminates needing to pull in the entire ``initscripts``
73 package. The main ``initscripts`` package has a runtime dependency
74 (i.e. ``RDEPENDS``) on the ``sushell`` package when "selinux" is in
75 ``DISTRO_FEATURES``.
76
77- ``glib-2.0``: The ``glib-2.0`` package now has a recommended
78 runtime dependency (i.e. ``RRECOMMENDS``) on the ``shared-mime-info``
79 package, since large portions of GIO are not useful without the MIME
80 database. You can remove the dependency by using the
81 :term:`BAD_RECOMMENDATIONS` variable if
82 ``shared-mime-info`` is too large and is not required.
83
84- *Go Standard Runtime:* The Go standard runtime has been split out
85 from the main ``go`` recipe into a separate ``go-runtime`` recipe.
86
87.. _migration-2.4-removed-recipes:
88
89Removed Recipes
90---------------
91
92The following recipes have been removed:
93
94- ``acpitests``: This recipe is not maintained.
95
96- ``autogen-native``: No longer required by Grub, oe-core, or
97 meta-oe.
98
99- ``bdwgc``: Nothing in OpenEmbedded-Core requires this recipe. It
100 has moved to meta-oe.
101
102- ``byacc``: This recipe was only needed by rpm 5.x and has moved to
103 meta-oe.
104
105- ``gcc (5.4)``: The 5.4 series dropped the recipe in favor of 6.3 /
106 7.2.
107
108- ``gnome-common``: Deprecated upstream and no longer needed.
109
110- ``go-bootstrap-native``: Go 1.9 does its own bootstrapping so this
111 recipe has been removed.
112
113- ``guile``: This recipe was only needed by ``autogen-native`` and
114 ``remake``. The recipe is no longer needed by either of these
115 programs.
116
117- ``libclass-isa-perl``: This recipe was previously needed for LSB 4,
118 no longer needed.
119
120- ``libdumpvalue-perl``: This recipe was previously needed for LSB 4,
121 no longer needed.
122
123- ``libenv-perl``: This recipe was previously needed for LSB 4, no
124 longer needed.
125
126- ``libfile-checktree-perl``: This recipe was previously needed for
127 LSB 4, no longer needed.
128
129- ``libi18n-collate-perl``: This recipe was previously needed for LSB
130 4, no longer needed.
131
132- ``libiconv``: This recipe was only needed for ``uclibc``, which was
133 removed in the previous release. ``glibc`` and ``musl`` have their
134 own implementations. ``meta-mingw`` still needs ``libiconv``, so it
135 has been moved to ``meta-mingw``.
136
137- ``libpng12``: This recipe was previously needed for LSB. The
138 current ``libpng`` is 1.6.x.
139
140- ``libpod-plainer-perl``: This recipe was previously needed for LSB
141 4, no longer needed.
142
143- ``linux-yocto (4.1)``: This recipe was removed in favor of 4.4,
144 4.9, 4.10 and 4.12.
145
146- ``mailx``: This recipe was previously only needed for LSB
147 compatibility, and upstream is defunct.
148
149- ``mesa (git version only)``: The git version recipe was stale with
150 respect to the release version.
151
152- ``ofono (git version only)``: The git version recipe was stale with
153 respect to the release version.
154
155- ``portmap``: This recipe is obsolete and is superseded by
156 ``rpcbind``.
157
158- ``python3-pygpgme``: This recipe is old and unmaintained. It was
159 previously required by ``dnf``, which has switched to official
160 ``gpgme`` Python bindings.
161
162- ``python-async``: This recipe has been removed in favor of the
163 Python 3 version.
164
165- ``python-gitdb``: This recipe has been removed in favor of the
166 Python 3 version.
167
168- ``python-git``: This recipe was removed in favor of the Python 3
169 version.
170
171- ``python-mako``: This recipe was removed in favor of the Python 3
172 version.
173
174- ``python-pexpect``: This recipe was removed in favor of the Python
175 3 version.
176
177- ``python-ptyprocess``: This recipe was removed in favor of Python
178 the 3 version.
179
180- ``python-pycurl``: Nothing is using this recipe in
181 OpenEmbedded-Core (i.e. ``meta-oe``).
182
183- ``python-six``: This recipe was removed in favor of the Python 3
184 version.
185
186- ``python-smmap``: This recipe was removed in favor of the Python 3
187 version.
188
189- ``remake``: Using ``remake`` as the provider of ``virtual/make`` is
190 broken. Consequently, this recipe is not needed in OpenEmbedded-Core.
191
192.. _migration-2.4-kernel-device-tree-move:
193
194Kernel Device Tree Move
195-----------------------
196
197Kernel Device Tree support is now easier to enable in a kernel recipe.
198The Device Tree code has moved to a
199:ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class.
200Functionality is automatically enabled for any recipe that inherits the
201:ref:`kernel <ref-classes-kernel>` class and sets the
202:term:`KERNEL_DEVICETREE` variable. The
203previous mechanism for doing this,
204``meta/recipes-kernel/linux/linux-dtb.inc``, is still available to avoid
205breakage, but triggers a deprecation warning. Future releases of the
206Yocto Project will remove ``meta/recipes-kernel/linux/linux-dtb.inc``.
207It is advisable to remove any ``require`` statements that request
208``meta/recipes-kernel/linux/linux-dtb.inc`` from any custom kernel
209recipes you might have. This will avoid breakage in post 2.4 releases.
210
211.. _migration-2.4-package-qa-changes:
212
213Package QA Changes
214------------------
215
216The following package QA changes took place:
217
218- The "unsafe-references-in-scripts" QA check has been removed.
219
220- If you refer to ``${COREBASE}/LICENSE`` within
221 :term:`LIC_FILES_CHKSUM` you receive a
222 warning because this file is a description of the license for
223 OE-Core. Use ``${COMMON_LICENSE_DIR}/MIT`` if your recipe is
224 MIT-licensed and you cannot use the preferred method of referring to
225 a file within the source tree.
226
227.. _migration-2.4-readme-changes:
228
229``README`` File Changes
230-----------------------
231
232The following are changes to ``README`` files:
233
234- The main Poky ``README`` file has been moved to the ``meta-poky``
235 layer and has been renamed ``README.poky``. A symlink has been
236 created so that references to the old location work.
237
238- The ``README.hardware`` file has been moved to ``meta-yocto-bsp``. A
239 symlink has been created so that references to the old location work.
240
241- A ``README.qemu`` file has been created with coverage of the
242 ``qemu*`` machines.
243
244.. _migration-2.4-miscellaneous-changes:
245
246Miscellaneous Changes
247---------------------
248
249The following are additional changes:
250
251- The ``ROOTFS_PKGMANAGE_BOOTSTRAP`` variable and any references to it
252 have been removed. You should remove this variable from any custom
253 recipes.
254
255- The ``meta-yocto`` directory has been removed.
256
257 .. note::
258
259 In the Yocto Project 2.1 release
260 meta-yocto
261 was renamed to
262 meta-poky
263 and the
264 meta-yocto
265 subdirectory remained to avoid breaking existing configurations.
266
267- The ``maintainers.inc`` file, which tracks maintainers by listing a
268 primary person responsible for each recipe in OE-Core, has been moved
269 from ``meta-poky`` to OE-Core (i.e. from
270 ``meta-poky/conf/distro/include`` to ``meta/conf/distro/include``).
271
272- The :ref:`buildhistory <ref-classes-buildhistory>` class now makes
273 a single commit per build rather than one commit per subdirectory in
274 the repository. This behavior assumes the commits are enabled with
275 :term:`BUILDHISTORY_COMMIT` = "1", which
276 is typical. Previously, the ``buildhistory`` class made one commit
277 per subdirectory in the repository in order to make it easier to see
278 the changes for a particular subdirectory. To view a particular
279 change, specify that subdirectory as the last parameter on the
280 ``git show`` or ``git diff`` commands.
281
282- The ``x86-base.inc`` file, which is included by all x86-based machine
283 configurations, now sets :term:`IMAGE_FSTYPES`
284 using ``?=`` to "live" rather than appending with ``+=``. This change
285 makes the default easier to override.
286
287- BitBake fires multiple "BuildStarted" events when multiconfig is
288 enabled (one per configuration). For more information, see the
289 ":ref:`Events <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:events>`" section in the BitBake User
290 Manual.
291
292- By default, the ``security_flags.inc`` file sets a
293 :term:`GCCPIE` variable with an option to enable
294 Position Independent Executables (PIE) within ``gcc``. Enabling PIE
295 in the GNU C Compiler (GCC), makes Return Oriented Programming (ROP)
296 attacks much more difficult to execute.
297
298- OE-Core now provides a ``bitbake-layers`` plugin that implements a
299 "create-layer" subcommand. The implementation of this subcommand has
300 resulted in the ``yocto-layer`` script being deprecated and will
301 likely be removed in the next Yocto Project release.
302
303- The ``vmdk``, ``vdi``, and ``qcow2`` image file types are now used in
304 conjunction with the "wic" image type through ``CONVERSION_CMD``.
305 Consequently, the equivalent image types are now ``wic.vmdk``,
306 ``wic.vdi``, and ``wic.qcow2``, respectively.
307
308- ``do_image_<type>[depends]`` has replaced ``IMAGE_DEPENDS_<type>``.
309 If you have your own classes that implement custom image types, then
310 you need to update them.
311
312- OpenSSL 1.1 has been introduced. However, the default is still 1.0.x
313 through the :term:`PREFERRED_VERSION`
314 variable. This preference is set is due to the remaining
315 compatibility issues with other software. The
316 :term:`PROVIDES` variable in the openssl 1.0 recipe
317 now includes "openssl10" as a marker that can be used in
318 :term:`DEPENDS` within recipes that build software
319 that still depend on OpenSSL 1.0.
320
321- To ensure consistent behavior, BitBake's "-r" and "-R" options (i.e.
322 prefile and postfile), which are used to read or post-read additional
323 configuration files from the command line, now only affect the
324 current BitBake command. Before these BitBake changes, these options
325 would "stick" for future executions.
326
327
diff --git a/documentation/ref-manual/migration-2.5.rst b/documentation/ref-manual/migration-2.5.rst
deleted file mode 100644
index 9f45ffce76..0000000000
--- a/documentation/ref-manual/migration-2.5.rst
+++ /dev/null
@@ -1,310 +0,0 @@
1Moving to the Yocto Project 2.5 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.5 Release from the prior release.
6
7.. _migration-2.5-packaging-changes:
8
9Packaging Changes
10-----------------
11
12This section provides information about packaging changes that have
13occurred:
14
15- ``bind-libs``: The libraries packaged by the bind recipe are in a
16 separate ``bind-libs`` package.
17
18- ``libfm-gtk``: The ``libfm`` GTK+ bindings are split into a
19 separate ``libfm-gtk`` package.
20
21- ``flex-libfl``: The flex recipe splits out libfl into a separate
22 ``flex-libfl`` package to avoid too many dependencies being pulled in
23 where only the library is needed.
24
25- ``grub-efi``: The ``grub-efi`` configuration is split into a
26 separate ``grub-bootconf`` recipe. However, the dependency
27 relationship from ``grub-efi`` is through a virtual/grub-bootconf
28 provider making it possible to have your own recipe provide the
29 dependency. Alternatively, you can use a BitBake append file to bring
30 the configuration back into the ``grub-efi`` recipe.
31
32- *armv7a Legacy Package Feed Support:* Legacy support is removed for
33 transitioning from ``armv7a`` to ``armv7a-vfp-neon`` in package
34 feeds, which was previously enabled by setting
35 ``PKGARCHCOMPAT_ARMV7A``. This transition occurred in 2011 and active
36 package feeds should by now be updated to the new naming.
37
38.. _migration-2.5-removed-recipes:
39
40Removed Recipes
41---------------
42
43The following recipes have been removed:
44
45- ``gcc``: The version 6.4 recipes are replaced by 7.x.
46
47- ``gst-player``: Renamed to ``gst-examples`` as per upstream.
48
49- ``hostap-utils``: This software package is obsolete.
50
51- ``latencytop``: This recipe is no longer maintained upstream. The
52 last release was in 2009.
53
54- ``libpfm4``: The only file that requires this recipe is
55 ``oprofile``, which has been removed.
56
57- ``linux-yocto``: The version 4.4, 4.9, and 4.10 recipes have been
58 removed. Versions 4.12, 4.14, and 4.15 remain.
59
60- ``man``: This recipe has been replaced by modern ``man-db``
61
62- ``mkelfimage``: This tool has been removed in the upstream coreboot
63 project, and is no longer needed with the removal of the ELF image
64 type.
65
66- ``nativesdk-postinst-intercept``: This recipe is not maintained.
67
68- ``neon``: This software package is no longer maintained upstream
69 and is no longer needed by anything in OpenEmbedded-Core.
70
71- ``oprofile``: The functionality of this recipe is replaced by
72 ``perf`` and keeping compatibility on an ongoing basis with ``musl``
73 is difficult.
74
75- ``pax``: This software package is obsolete.
76
77- ``stat``: This software package is not maintained upstream.
78 ``coreutils`` provides a modern stat binary.
79
80- ``zisofs-tools-native``: This recipe is no longer needed because
81 the compressed ISO image feature has been removed.
82
83.. _migration-2.5-scripts-and-tools-changes:
84
85Scripts and Tools Changes
86-------------------------
87
88The following are changes to scripts and tools:
89
90- ``yocto-bsp``, ``yocto-kernel``, and ``yocto-layer``: The
91 ``yocto-bsp``, ``yocto-kernel``, and ``yocto-layer`` scripts
92 previously shipped with poky but not in OpenEmbedded-Core have been
93 removed. These scripts are not maintained and are outdated. In many
94 cases, they are also limited in scope. The
95 ``bitbake-layers create-layer`` command is a direct replacement for
96 ``yocto-layer``. See the documentation to create a BSP or kernel
97 recipe in the ":ref:`bsp-guide/bsp:bsp kernel recipe example`" section.
98
99- ``devtool finish``: ``devtool finish`` now exits with an error if
100 there are uncommitted changes or a rebase/am in progress in the
101 recipe's source repository. If this error occurs, there might be
102 uncommitted changes that will not be included in updates to the
103 patches applied by the recipe. A -f/--force option is provided for
104 situations that the uncommitted changes are inconsequential and you
105 want to proceed regardless.
106
107- ``scripts/oe-setup-rpmrepo`` script: The functionality of
108 ``scripts/oe-setup-rpmrepo`` is replaced by
109 ``bitbake package-index``.
110
111- ``scripts/test-dependencies.sh`` script: The script is largely made
112 obsolete by the recipe-specific sysroots functionality introduced in
113 the previous release.
114
115.. _migration-2.5-bitbake-changes:
116
117BitBake Changes
118---------------
119
120The following are BitBake changes:
121
122- The ``--runall`` option has changed. There are two different
123 behaviors people might want:
124
125 - *Behavior A:* For a given target (or set of targets) look through
126 the task graph and run task X only if it is present and will be
127 built.
128
129 - *Behavior B:* For a given target (or set of targets) look through
130 the task graph and run task X if any recipe in the taskgraph has
131 such a target, even if it is not in the original task graph.
132
133 The ``--runall`` option now performs "Behavior B". Previously
134 ``--runall`` behaved like "Behavior A". A ``--runonly`` option has
135 been added to retain the ability to perform "Behavior A".
136
137- Several explicit "run this task for all recipes in the dependency
138 tree" tasks have been removed (e.g. ``fetchall``, ``checkuriall``,
139 and the ``*all`` tasks provided by the ``distrodata`` and
140 ``archiver`` classes). There is a BitBake option to complete this for
141 any arbitrary task. For example:
142 ::
143
144 bitbake <target> -c fetchall
145
146 should now be replaced with:
147 ::
148
149 bitbake <target> --runall=fetch
150
151.. _migration-2.5-python-and-python3-changes:
152
153Python and Python 3 Changes
154---------------------------
155
156The following are auto-packaging changes to Python and Python 3:
157
158The script-managed ``python-*-manifest.inc`` files that were previously
159used to generate Python and Python 3 packages have been replaced with a
160JSON-based file that is easier to read and maintain. A new task is
161available for maintainers of the Python recipes to update the JSON file
162when upgrading to new Python versions. You can now edit the file
163directly instead of having to edit a script and run it to update the
164file.
165
166One particular change to note is that the Python recipes no longer have
167build-time provides for their packages. This assumes ``python-foo`` is
168one of the packages provided by the Python recipe. You can no longer run
169``bitbake python-foo`` or have a
170:term:`DEPENDS` on ``python-foo``,
171but doing either of the following causes the package to work as
172expected: ::
173
174 IMAGE_INSTALL_append = " python-foo"
175
176or ::
177
178 RDEPENDS_${PN} = "python-foo"
179
180The earlier build-time provides behavior was a quirk of the
181way the Python manifest file was created. For more information on this
182change please see :yocto_git:`this commit
183</poky/commit/?id=8d94b9db221d1def42f091b991903faa2d1651ce>`.
184
185.. _migration-2.5-miscellaneous-changes:
186
187Miscellaneous Changes
188---------------------
189
190The following are additional changes:
191
192- The ``kernel`` class supports building packages for multiple kernels.
193 If your kernel recipe or ``.bbappend`` file mentions packaging at
194 all, you should replace references to the kernel in package names
195 with ``${KERNEL_PACKAGE_NAME}``. For example, if you disable
196 automatic installation of the kernel image using
197 ``RDEPENDS_kernel-base = ""`` you can avoid warnings using
198 ``RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""`` instead.
199
200- The ``buildhistory`` class commits changes to the repository by
201 default so you no longer need to set ``BUILDHISTORY_COMMIT = "1"``.
202 If you want to disable commits you need to set
203 ``BUILDHISTORY_COMMIT = "0"`` in your configuration.
204
205- The ``beaglebone`` reference machine has been renamed to
206 ``beaglebone-yocto``. The ``beaglebone-yocto`` BSP is a reference
207 implementation using only mainline components available in
208 OpenEmbedded-Core and ``meta-yocto-bsp``, whereas Texas Instruments
209 maintains a full-featured BSP in the ``meta-ti`` layer. This rename
210 avoids the previous name clash that existed between the two BSPs.
211
212- The ``update-alternatives`` class no longer works with SysV ``init``
213 scripts because this usage has been problematic. Also, the
214 ``sysklogd`` recipe no longer uses ``update-alternatives`` because it
215 is incompatible with other implementations.
216
217- By default, the :ref:`cmake <ref-classes-cmake>` class uses
218 ``ninja`` instead of ``make`` for building. This improves build
219 performance. If a recipe is broken with ``ninja``, then the recipe
220 can set ``OECMAKE_GENERATOR = "Unix Makefiles"`` to change back to
221 ``make``.
222
223- The previously deprecated ``base_*`` functions have been removed in
224 favor of their replacements in ``meta/lib/oe`` and
225 ``bitbake/lib/bb``. These are typically used from recipes and
226 classes. Any references to the old functions must be updated. The
227 following table shows the removed functions and their replacements:
228
229 +------------------------------+----------------------------------------------------------+
230 | *Removed* | *Replacement* |
231 +==============================+==========================================================+
232 | base_path_join() | oe.path.join() |
233 +------------------------------+----------------------------------------------------------+
234 | base_path_relative() | oe.path.relative() |
235 +------------------------------+----------------------------------------------------------+
236 | base_path_out() | oe.path.format_display() |
237 +------------------------------+----------------------------------------------------------+
238 | base_read_file() | oe.utils.read_file() |
239 +------------------------------+----------------------------------------------------------+
240 | base_ifelse() | oe.utils.ifelse() |
241 +------------------------------+----------------------------------------------------------+
242 | base_conditional() | oe.utils.conditional() |
243 +------------------------------+----------------------------------------------------------+
244 | base_less_or_equal() | oe.utils.less_or_equal() |
245 +------------------------------+----------------------------------------------------------+
246 | base_version_less_or_equal() | oe.utils.version_less_or_equal() |
247 +------------------------------+----------------------------------------------------------+
248 | base_contains() | bb.utils.contains() |
249 +------------------------------+----------------------------------------------------------+
250 | base_both_contain() | oe.utils.both_contain() |
251 +------------------------------+----------------------------------------------------------+
252 | base_prune_suffix() | oe.utils.prune_suffix() |
253 +------------------------------+----------------------------------------------------------+
254 | oe_filter() | oe.utils.str_filter() |
255 +------------------------------+----------------------------------------------------------+
256 | oe_filter_out() | oe.utils.str_filter_out() (or use the \_remove operator) |
257 +------------------------------+----------------------------------------------------------+
258
259- Using ``exit 1`` to explicitly defer a postinstall script until first
260 boot is now deprecated since it is not an obvious mechanism and can
261 mask actual errors. If you want to explicitly defer a postinstall to
262 first boot on the target rather than at ``rootfs`` creation time, use
263 ``pkg_postinst_ontarget()`` or call
264 ``postinst_intercept delay_to_first_boot`` from ``pkg_postinst()``.
265 Any failure of a ``pkg_postinst()`` script (including ``exit 1``)
266 will trigger a warning during ``do_rootfs``.
267
268 For more information, see the
269 ":ref:`dev-manual/common-tasks:post-installation scripts`"
270 section in the Yocto Project Development Tasks Manual.
271
272- The ``elf`` image type has been removed. This image type was removed
273 because the ``mkelfimage`` tool that was required to create it is no
274 longer provided by coreboot upstream and required updating every time
275 ``binutils`` updated.
276
277- Support for .iso image compression (previously enabled through
278 ``COMPRESSISO = "1"``) has been removed. The userspace tools
279 (``zisofs-tools``) are unmaintained and ``squashfs`` provides better
280 performance and compression. In order to build a live image with
281 squashfs+lz4 compression enabled you should now set
282 ``LIVE_ROOTFS_TYPE = "squashfs-lz4"`` and ensure that ``live`` is in
283 ``IMAGE_FSTYPES``.
284
285- Recipes with an unconditional dependency on ``libpam`` are only
286 buildable with ``pam`` in ``DISTRO_FEATURES``. If the dependency is
287 truly optional then it is recommended that the dependency be
288 conditional upon ``pam`` being in ``DISTRO_FEATURES``.
289
290- For EFI-based machines, the bootloader (``grub-efi`` by default) is
291 installed into the image at /boot. Wic can be used to split the
292 bootloader into separate boot and rootfs partitions if necessary.
293
294- Patches whose context does not match exactly (i.e. where patch
295 reports "fuzz" when applying) will generate a warning. For an example
296 of this see :yocto_git:`this commit
297 </poky/commit/?id=cc97bc08125b63821ce3f616771830f77c456f57>`.
298
299- Layers are expected to set ``LAYERSERIES_COMPAT_layername`` to match
300 the version(s) of OpenEmbedded-Core they are compatible with. This is
301 specified as codenames using spaces to separate multiple values (e.g.
302 "rocko sumo"). If a layer does not set
303 ``LAYERSERIES_COMPAT_layername``, a warning will is shown. If a layer
304 sets a value that does not include the current version ("sumo" for
305 the 2.5 release), then an error will be produced.
306
307- The ``TZ`` environment variable is set to "UTC" within the build
308 environment in order to fix reproducibility problems in some recipes.
309
310
diff --git a/documentation/ref-manual/migration-2.6.rst b/documentation/ref-manual/migration-2.6.rst
deleted file mode 100644
index 5d524f3817..0000000000
--- a/documentation/ref-manual/migration-2.6.rst
+++ /dev/null
@@ -1,457 +0,0 @@
1Moving to the Yocto Project 2.6 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.6 Release from the prior release.
6
7.. _migration-2.6-gcc-changes:
8
9GCC 8.2 is Now Used by Default
10------------------------------
11
12The GNU Compiler Collection version 8.2 is now used by default for
13compilation. For more information on what has changed in the GCC 8.x
14release, see https://gcc.gnu.org/gcc-8/changes.html.
15
16If you still need to compile with version 7.x, GCC 7.3 is also provided.
17You can select this version by setting the and can be selected by
18setting the :term:`GCCVERSION` variable to "7.%" in
19your configuration.
20
21.. _migration-2.6-removed-recipes:
22
23Removed Recipes
24---------------
25
26The following recipes have been removed:
27
28- *beecrypt*: No longer needed since moving to RPM 4.
29- *bigreqsproto*: Replaced by ``xorgproto``.
30- *calibrateproto*: Removed in favor of ``xinput``.
31- *compositeproto*: Replaced by ``xorgproto``.
32- *damageproto*: Replaced by ``xorgproto``.
33- *dmxproto*: Replaced by ``xorgproto``.
34- *dri2proto*: Replaced by ``xorgproto``.
35- *dri3proto*: Replaced by ``xorgproto``.
36- *eee-acpi-scripts*: Became obsolete.
37- *fixesproto*: Replaced by ``xorgproto``.
38- *fontsproto*: Replaced by ``xorgproto``.
39- *fstests*: Became obsolete.
40- *gccmakedep*: No longer used.
41- *glproto*: Replaced by ``xorgproto``.
42- *gnome-desktop3*: No longer needed. This recipe has moved to ``meta-oe``.
43- *icon-naming-utils*: No longer used since the Sato theme was removed in 2016.
44- *inputproto*: Replaced by ``xorgproto``.
45- *kbproto*: Replaced by ``xorgproto``.
46- *libusb-compat*: Became obsolete.
47- *libuser*: Became obsolete.
48- *libnfsidmap*: No longer an external requirement since ``nfs-utils`` 2.2.1. ``libnfsidmap`` is now integrated.
49- *libxcalibrate*: No longer needed with ``xinput``
50- *mktemp*: Became obsolete. The ``mktemp`` command is provided by both ``busybox`` and ``coreutils``.
51- *ossp-uuid*: Is not being maintained and has mostly been replaced by ``uuid.h`` in ``util-linux``.
52- *pax-utils*: No longer needed. Previous QA tests that did use this recipe are now done at build time.
53- *pcmciautils*: Became obsolete.
54- *pixz*: No longer needed. ``xz`` now supports multi-threaded compression.
55- *presentproto*: Replaced by ``xorgproto``.
56- *randrproto*: Replaced by ``xorgproto``.
57- *recordproto*: Replaced by ``xorgproto``.
58- *renderproto*: Replaced by ``xorgproto``.
59- *resourceproto*: Replaced by ``xorgproto``.
60- *scrnsaverproto*: Replaced by ``xorgproto``.
61- *trace-cmd*: Became obsolete. ``perf`` replaced this recipe's functionally.
62- *videoproto*: Replaced by ``xorgproto``.
63- *wireless-tools*: Became obsolete. Superseded by ``iw``.
64- *xcmiscproto*: Replaced by ``xorgproto``.
65- *xextproto*: Replaced by ``xorgproto``.
66- *xf86dgaproto*: Replaced by ``xorgproto``.
67- *xf86driproto*: Replaced by ``xorgproto``.
68- *xf86miscproto*: Replaced by ``xorgproto``.
69- *xf86-video-omapfb*: Became obsolete. Use kernel modesetting driver instead.
70- *xf86-video-omap*: Became obsolete. Use kernel modesetting driver instead.
71- *xf86vidmodeproto*: Replaced by ``xorgproto``.
72- *xineramaproto*: Replaced by ``xorgproto``.
73- *xproto*: Replaced by ``xorgproto``.
74- *yasm*: No longer needed since previous usages are now satisfied by ``nasm``.
75
76.. _migration-2.6-packaging-changes:
77
78Packaging Changes
79-----------------
80
81The following packaging changes have been made:
82
83- *cmake*: ``cmake.m4`` and ``toolchain`` files have been moved to
84 the main package.
85
86- *iptables*: The ``iptables`` modules have been split into
87 separate packages.
88
89- *alsa-lib*: ``libasound`` is now in the main ``alsa-lib`` package
90 instead of ``libasound``.
91
92- *glibc*: ``libnss-db`` is now in its own package along with a
93 ``/var/db/makedbs.sh`` script to update databases.
94
95- *python and python3*: The main package has been removed from
96 the recipe. You must install specific packages or ``python-modules``
97 / ``python3-modules`` for everything.
98
99- *systemtap*: Moved ``systemtap-exporter`` into its own package.
100
101.. _migration-2.6-xorg-protocol-dependencies:
102
103XOrg Protocol dependencies
104--------------------------
105
106The ``*proto`` upstream repositories have been combined into one
107"xorgproto" repository. Thus, the corresponding recipes have also been
108combined into a single ``xorgproto`` recipe. Any recipes that depend
109upon the older ``*proto`` recipes need to be changed to depend on the
110newer ``xorgproto`` recipe instead.
111
112For names of recipes removed because of this repository change, see the
113`Removed Recipes <#removed-recipes>`__ section.
114
115.. _migration-2.6-distutils-distutils3-fetching-dependencies:
116
117``distutils`` and ``distutils3`` Now Prevent Fetching Dependencies During the ``do_configure`` Task
118---------------------------------------------------------------------------------------------------
119
120Previously, it was possible for Python recipes that inherited the
121:ref:`distutils <ref-classes-distutils>` and
122:ref:`distutils3 <ref-classes-distutils3>` classes to fetch code
123during the :ref:`ref-tasks-configure` task to satisfy
124dependencies mentioned in ``setup.py`` if those dependencies were not
125provided in the sysroot (i.e. recipes providing the dependencies were
126missing from :term:`DEPENDS`).
127
128.. note::
129
130 This change affects classes beyond just the two mentioned (i.e.
131 ``distutils`` and ``distutils3``). Any recipe that inherits ``distutils*``
132 classes are affected. For example, the ``setuptools`` and ``setuptools3``
133 recipes are affected since they inherit the ``distutils*`` classes.
134
135Fetching these types of dependencies that are not provided in the
136sysroot negatively affects the ability to reproduce builds. This type of
137fetching is now explicitly disabled. Consequently, any missing
138dependencies in Python recipes that use these classes now result in an
139error during the ``do_configure`` task.
140
141.. _migration-2.6-linux-yocto-configuration-audit-issues-now-correctly-reported:
142
143``linux-yocto`` Configuration Audit Issues Now Correctly Reported
144-----------------------------------------------------------------
145
146Due to a bug, the kernel configuration audit functionality was not
147writing out any resulting warnings during the build. This issue is now
148corrected. You might notice these warnings now if you have a custom
149kernel configuration with a ``linux-yocto`` style kernel recipe.
150
151.. _migration-2.6-image-kernel-artifact-naming-changes:
152
153Image/Kernel Artifact Naming Changes
154------------------------------------
155
156The following changes have been made:
157
158- Name variables (e.g. :term:`IMAGE_NAME`) use a new
159 ``IMAGE_VERSION_SUFFIX`` variable instead of
160 :term:`DATETIME`. Using ``IMAGE_VERSION_SUFFIX``
161 allows easier and more direct changes.
162
163 The ``IMAGE_VERSION_SUFFIX`` variable is set in the ``bitbake.conf``
164 configuration file as follows:
165 ::
166
167 IMAGE_VERSION_SUFFIX = "-${DATETIME}"
168
169- Several variables have changed names for consistency:
170 ::
171
172 Old Variable Name New Variable Name
173 ========================================================
174 KERNEL_IMAGE_BASE_NAME KERNEL_IMAGE_NAME
175 KERNEL_IMAGE_SYMLINK_NAME KERNEL_IMAGE_LINK_NAME
176 MODULE_TARBALL_BASE_NAME MODULE_TARBALL_NAME
177 MODULE_TARBALL_SYMLINK_NAME MODULE_TARBALL_LINK_NAME
178 INITRAMFS_BASE_NAME INITRAMFS_NAME
179
180- The ``MODULE_IMAGE_BASE_NAME`` variable has been removed. The module
181 tarball name is now controlled directly with the
182 :term:`MODULE_TARBALL_NAME` variable.
183
184- The :term:`KERNEL_DTB_NAME` and
185 :term:`KERNEL_DTB_LINK_NAME` variables
186 have been introduced to control kernel Device Tree Binary (DTB)
187 artifact names instead of mangling ``KERNEL_IMAGE_*`` variables.
188
189- The :term:`KERNEL_FIT_NAME` and
190 :term:`KERNEL_FIT_LINK_NAME` variables
191 have been introduced to specify the name of flattened image tree
192 (FIT) kernel images similar to other deployed artifacts.
193
194- The :term:`MODULE_TARBALL_NAME` and
195 :term:`MODULE_TARBALL_LINK_NAME`
196 variable values no longer include the "module-" prefix or ".tgz"
197 suffix. These parts are now hardcoded so that the values are
198 consistent with other artifact naming variables.
199
200- Added the :term:`INITRAMFS_LINK_NAME`
201 variable so that the symlink can be controlled similarly to other
202 artifact types.
203
204- :term:`INITRAMFS_NAME` now uses
205 "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" instead
206 of "${PV}-${PR}-${MACHINE}-${DATETIME}", which makes it consistent
207 with other variables.
208
209.. _migration-2.6-serial-console-deprecated:
210
211``SERIAL_CONSOLE`` Deprecated
212-----------------------------
213
214The :term:`SERIAL_CONSOLE` variable has been
215functionally replaced by the
216:term:`SERIAL_CONSOLES` variable for some time.
217With the Yocto Project 2.6 release, ``SERIAL_CONSOLE`` has been
218officially deprecated.
219
220``SERIAL_CONSOLE`` will continue to work as before for the 2.6 release.
221However, for the sake of future compatibility, it is recommended that
222you replace all instances of ``SERIAL_CONSOLE`` with
223``SERIAL_CONSOLES``.
224
225.. note::
226
227 The only difference in usage is that ``SERIAL_CONSOLES``
228 expects entries to be separated using semicolons as compared to
229 ``SERIAL_CONSOLE``, which expects spaces.
230
231.. _migration-2.6-poky-sets-unknown-configure-option-to-qa-error:
232
233Configure Script Reports Unknown Options as Errors
234--------------------------------------------------
235
236If the configure script reports an unknown option, this now triggers a
237QA error instead of a warning. Any recipes that previously got away with
238specifying such unknown options now need to be fixed.
239
240.. _migration-2.6-override-changes:
241
242Override Changes
243----------------
244
245The following changes have occurred:
246
247- The ``virtclass-native`` and ``virtclass-nativesdk`` Overrides Have
248 Been Removed: The ``virtclass-native`` and ``virtclass-nativesdk``
249 overrides have been deprecated since 2012 in favor of
250 ``class-native`` and ``class-nativesdk``, respectively. Both
251 ``virtclass-native`` and ``virtclass-nativesdk`` are now dropped.
252
253 .. note::
254
255 The ``virtclass-multilib-`` overrides for multilib are still valid.
256
257- The ``forcevariable`` Override Now Has a Higher Priority Than
258 ``libc`` Overrides: The ``forcevariable`` override is documented to
259 be the highest priority override. However, due to a long-standing
260 quirk of how :term:`OVERRIDES` is set, the ``libc``
261 overrides (e.g. ``libc-glibc``, ``libc-musl``, and so forth)
262 erroneously had a higher priority. This issue is now corrected.
263
264 It is likely this change will not cause any problems. However, it is
265 possible with some unusual configurations that you might see a change
266 in behavior if you were relying on the previous behavior. Be sure to
267 check how you use ``forcevariable`` and ``libc-*`` overrides in your
268 custom layers and configuration files to ensure they make sense.
269
270- The ``build-${BUILD_OS}`` Override Has Been Removed: The
271 ``build-${BUILD_OS}``, which is typically ``build-linux``, override
272 has been removed because building on a host operating system other
273 than a recent version of Linux is neither supported nor recommended.
274 Dropping the override avoids giving the impression that other host
275 operating systems might be supported.
276
277- The "_remove" operator now preserves whitespace. Consequently, when
278 specifying list items to remove, be aware that leading and trailing
279 whitespace resulting from the removal is retained.
280
281 See the ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:removal (override style syntax)`"
282 section in the BitBake User Manual for a detailed example.
283
284.. _migration-2.6-systemd-configuration-now-split-out-to-system-conf:
285
286``systemd`` Configuration is Now Split Into ``systemd-conf``
287------------------------------------------------------------
288
289The configuration for the ``systemd`` recipe has been moved into a
290``system-conf`` recipe. Moving this configuration to a separate recipe
291avoids the ``systemd`` recipe from becoming machine-specific for cases
292where machine-specific configurations need to be applied (e.g. for
293``qemu*`` machines).
294
295Currently, the new recipe packages the following files:
296::
297
298 ${sysconfdir}/machine-id
299 ${sysconfdir}/systemd/coredump.conf
300 ${sysconfdir}/systemd/journald.conf
301 ${sysconfdir}/systemd/logind.conf
302 ${sysconfdir}/systemd/system.conf
303 ${sysconfdir}/systemd/user.conf
304
305If you previously used bbappend files to append the ``systemd`` recipe to
306change any of the listed files, you must do so for the ``systemd-conf``
307recipe instead.
308
309.. _migration-2.6-automatic-testing-changes:
310
311Automatic Testing Changes
312-------------------------
313
314This section provides information about automatic testing changes:
315
316- ``TEST_IMAGE`` Variable Removed: Prior to this release, you set the
317 ``TEST_IMAGE`` variable to "1" to enable automatic testing for
318 successfully built images. The ``TEST_IMAGE`` variable no longer
319 exists and has been replaced by the
320 :term:`TESTIMAGE_AUTO` variable.
321
322- Inheriting the ``testimage`` and ``testsdk`` Classes: Best
323 practices now dictate that you use the
324 :term:`IMAGE_CLASSES` variable rather than the
325 :term:`INHERIT` variable when you inherit the
326 :ref:`testimage <ref-classes-testimage*>` and
327 :ref:`testsdk <ref-classes-testsdk>` classes used for automatic
328 testing.
329
330.. _migration-2.6-openssl-changes:
331
332OpenSSL Changes
333---------------
334
335`OpenSSL <https://www.openssl.org/>`__ has been upgraded from 1.0 to
3361.1. By default, this upgrade could cause problems for recipes that have
337both versions in their dependency chains. The problem is that both
338versions cannot be installed together at build time.
339
340.. note::
341
342 It is possible to have both versions of the library at runtime.
343
344.. _migration-2.6-bitbake-changes:
345
346BitBake Changes
347---------------
348
349The server logfile ``bitbake-cookerdaemon.log`` is now always placed in
350the :term:`Build Directory` instead of the current
351directory.
352
353.. _migration-2.6-security-changes:
354
355Security Changes
356----------------
357
358The Poky distribution now uses security compiler flags by default.
359Inclusion of these flags could cause new failures due to stricter
360checking for various potential security issues in code.
361
362.. _migration-2.6-post-installation-changes:
363
364Post Installation Changes
365-------------------------
366
367You must explicitly mark post installs to defer to the target. If you
368want to explicitly defer a postinstall to first boot on the target
369rather than at rootfs creation time, use ``pkg_postinst_ontarget()`` or
370call ``postinst_intercept delay_to_first_boot`` from ``pkg_postinst()``.
371Any failure of a ``pkg_postinst()`` script (including exit 1) triggers
372an error during the :ref:`ref-tasks-rootfs` task.
373
374For more information on post-installation behavior, see the
375":ref:`dev-manual/common-tasks:post-installation scripts`"
376section in the Yocto Project Development Tasks Manual.
377
378.. _migration-2.6-python-3-profile-guided-optimizations:
379
380Python 3 Profile-Guided Optimization
381------------------------------------
382
383The ``python3`` recipe now enables profile-guided optimization. Using
384this optimization requires a little extra build time in exchange for
385improved performance on the target at runtime. Additionally, the
386optimization is only enabled if the current
387:term:`MACHINE` has support for user-mode emulation in
388QEMU (i.e. "qemu-usermode" is in
389:term:`MACHINE_FEATURES`, which it is by
390default).
391
392If you wish to disable Python profile-guided optimization regardless of
393the value of ``MACHINE_FEATURES``, then ensure that
394:term:`PACKAGECONFIG` for the ``python3`` recipe
395does not contain "pgo". You could accomplish the latter using the
396following at the configuration level:
397::
398
399 PACKAGECONFIG_remove_pn-python3 = "pgo"
400
401Alternatively, you can set ``PACKAGECONFIG`` using an append file
402for the ``python3`` recipe.
403
404.. _migration-2.6-miscellaneous-changes:
405
406Miscellaneous Changes
407---------------------
408
409The following miscellaneous changes occurred:
410
411- Default to using the Thumb-2 instruction set for armv7a and above. If
412 you have any custom recipes that build software that needs to be
413 built with the ARM instruction set, change the recipe to set the
414 instruction set as follows:
415 ::
416
417 ARM_INSTRUCTION_SET = "arm"
418
419- ``run-postinsts`` no longer uses ``/etc/*-postinsts`` for
420 ``dpkg/opkg`` in favor of built-in postinst support. RPM behavior
421 remains unchanged.
422
423- The ``NOISO`` and ``NOHDD`` variables are no longer used. You now
424 control building ``*.iso`` and ``*.hddimg`` image types directly by
425 using the :term:`IMAGE_FSTYPES` variable.
426
427- The ``scripts/contrib/mkefidisk.sh`` has been removed in favor of
428 Wic.
429
430- ``kernel-modules`` has been removed from
431 :term:`RRECOMMENDS` for ``qemumips`` and
432 ``qemumips64`` machines. Removal also impacts the ``x86-base.inc``
433 file.
434
435 .. note::
436
437 ``genericx86`` and ``genericx86-64`` retain ``kernel-modules`` as part of
438 the ``RRECOMMENDS`` variable setting.
439
440- The ``LGPLv2_WHITELIST_GPL-3.0`` variable has been removed. If you
441 are setting this variable in your configuration, set or append it to
442 the ``WHITELIST_GPL-3.0`` variable instead.
443
444- ``${ASNEEDED}`` is now included in the
445 :term:`TARGET_LDFLAGS` variable directly. The
446 remaining definitions from ``meta/conf/distro/include/as-needed.inc``
447 have been moved to corresponding recipes.
448
449- Support for DSA host keys has been dropped from the OpenSSH recipes.
450 If you are still using DSA keys, you must switch over to a more
451 secure algorithm as recommended by OpenSSH upstream.
452
453- The ``dhcp`` recipe now uses the ``dhcpd6.conf`` configuration file
454 in ``dhcpd6.service`` for IPv6 DHCP rather than re-using
455 ``dhcpd.conf``, which is now reserved for IPv4.
456
457
diff --git a/documentation/ref-manual/migration-2.7.rst b/documentation/ref-manual/migration-2.7.rst
deleted file mode 100644
index 5af5947fff..0000000000
--- a/documentation/ref-manual/migration-2.7.rst
+++ /dev/null
@@ -1,180 +0,0 @@
1Moving to the Yocto Project 2.7 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 2.7 Release from the prior release.
6
7.. _migration-2.7-bitbake-changes:
8
9BitBake Changes
10---------------
11
12The following changes have been made to BitBake:
13
14- BitBake now checks anonymous Python functions and pure Python
15 functions (e.g. ``def funcname:``) in the metadata for tab
16 indentation. If found, BitBake produces a warning.
17
18- Bitbake now checks
19 :term:`BBFILE_COLLECTIONS` for duplicate
20 entries and triggers an error if any are found.
21
22.. _migration-2.7-eclipse-support-dropped:
23
24Eclipse Support Removed
25-----------------------
26
27Support for the Eclipse IDE has been removed. Support continues for
28those releases prior to 2.7 that did include support. The 2.7 release
29does not include the Eclipse Yocto plugin.
30
31.. _migration-2.7-qemu-native-splits-system-and-user-mode-parts:
32
33``qemu-native`` Splits the System and User-Mode Parts
34-----------------------------------------------------
35
36The system and user-mode parts of ``qemu-native`` are now split.
37``qemu-native`` provides the user-mode components and
38``qemu-system-native`` provides the system components. If you have
39recipes that depend on QEMU's system emulation functionality at build
40time, they should now depend upon ``qemu-system-native`` instead of
41``qemu-native``.
42
43.. _migration-2.7-upstream-tracking.inc-removed:
44
45The ``upstream-tracking.inc`` File Has Been Removed
46---------------------------------------------------
47
48The previously deprecated ``upstream-tracking.inc`` file is now removed.
49Any ``UPSTREAM_TRACKING*`` variables are now set in the corresponding
50recipes instead.
51
52Remove any references you have to the ``upstream-tracking.inc`` file in
53your configuration.
54
55.. _migration-2.7-distro-features-libc-removed:
56
57The ``DISTRO_FEATURES_LIBC`` Variable Has Been Removed
58------------------------------------------------------
59
60The ``DISTRO_FEATURES_LIBC`` variable is no longer used. The ability to
61configure glibc using kconfig has been removed for quite some time
62making the ``libc-*`` features set no longer effective.
63
64Remove any references you have to ``DISTRO_FEATURES_LIBC`` in your own
65layers.
66
67.. _migration-2.7-license-values:
68
69License Value Corrections
70-------------------------
71
72The following corrections have been made to the
73:term:`LICENSE` values set by recipes:
74
75- *socat*: Corrected ``LICENSE`` to be "GPLv2" rather than "GPLv2+".
76- *libgfortran*: Set license to "GPL-3.0-with-GCC-exception".
77- *elfutils*: Removed "Elfutils-Exception" and set to "GPLv2" for shared libraries
78
79.. _migration-2.7-packaging-changes:
80
81Packaging Changes
82-----------------
83
84This section provides information about packaging changes.
85
86- ``bind``: The ``nsupdate`` binary has been moved to the
87 ``bind-utils`` package.
88
89- Debug split: The default debug split has been changed to create
90 separate source packages (i.e. package_name\ ``-dbg`` and
91 package_name\ ``-src``). If you are currently using ``dbg-pkgs`` in
92 :term:`IMAGE_FEATURES` to bring in debug
93 symbols and you still need the sources, you must now also add
94 ``src-pkgs`` to ``IMAGE_FEATURES``. Source packages remain in the
95 target portion of the SDK by default, unless you have set your own
96 value for :term:`SDKIMAGE_FEATURES` that
97 does not include ``src-pkgs``.
98
99- Mount all using ``util-linux``: ``/etc/default/mountall`` has moved
100 into the -mount sub-package.
101
102- Splitting binaries using ``util-linux``: ``util-linux`` now splits
103 each binary into its own package for fine-grained control. The main
104 ``util-linux`` package pulls in the individual binary packages using
105 the :term:`RRECOMMENDS` and
106 :term:`RDEPENDS` variables. As a result, existing
107 images should not see any changes assuming
108 :term:`NO_RECOMMENDATIONS` is not set.
109
110- ``netbase/base-files``: ``/etc/hosts`` has moved from ``netbase`` to
111 ``base-files``.
112
113- ``tzdata``: The main package has been converted to an empty meta
114 package that pulls in all ``tzdata`` packages by default.
115
116- ``lrzsz``: This package has been removed from
117 ``packagegroup-self-hosted`` and
118 ``packagegroup-core-tools-testapps``. The X/Y/ZModem support is less
119 likely to be needed on modern systems. If you are relying on these
120 packagegroups to include the ``lrzsz`` package in your image, you now
121 need to explicitly add the package.
122
123.. _migration-2.7-removed-recipes:
124
125Removed Recipes
126---------------
127
128The following recipes have been removed:
129
130- *gcc*: Drop version 7.3 recipes. Version 8.3 now remains.
131- *linux-yocto*: Drop versions 4.14 and 4.18 recipes. Versions 4.19 and 5.0 remain.
132- *go*: Drop version 1.9 recipes. Versions 1.11 and 1.12 remain.
133- *xvideo-tests*: Became obsolete.
134- *libart-lgpl*: Became obsolete.
135- *gtk-icon-utils-native*: These tools are now provided by gtk+3-native
136- *gcc-cross-initial*: No longer needed. gcc-cross/gcc-crosssdk is now used instead.
137- *gcc-crosssdk-initial*: No longer needed. gcc-cross/gcc-crosssdk is now used instead.
138- *glibc-initial*: Removed because the benefits of having it for site_config are currently outweighed by the cost of building the recipe.
139
140.. _migration-2.7-removed-classes:
141
142Removed Classes
143---------------
144
145The following classes have been removed:
146
147- *distutils-tools*: This class was never used.
148- *bugzilla.bbclass*: Became obsolete.
149- *distrodata*: This functionally has been replaced by a more modern tinfoil-based implementation.
150
151.. _migration-2.7-miscellaneous-changes:
152
153Miscellaneous Changes
154---------------------
155
156The following miscellaneous changes occurred:
157
158- The ``distro`` subdirectory of the Poky repository has been removed
159 from the top-level ``scripts`` directory.
160
161- Perl now builds for the target using
162 `perl-cross <https://arsv.github.io/perl-cross/>`_ for better
163 maintainability and improved build performance. This change should
164 not present any problems unless you have heavily customized your Perl
165 recipe.
166
167- ``arm-tunes``: Removed the "-march" option if mcpu is already added.
168
169- ``update-alternatives``: Convert file renames to
170 :term:`PACKAGE_PREPROCESS_FUNCS`
171
172- ``base/pixbufcache``: Obsolete ``sstatecompletions`` code has been
173 removed.
174
175- :ref:`native <ref-classes-native>` class:
176 :term:`RDEPENDS` handling has been enabled.
177
178- ``inetutils``: This recipe has rsh disabled.
179
180
diff --git a/documentation/ref-manual/migration-3.0.rst b/documentation/ref-manual/migration-3.0.rst
deleted file mode 100644
index 7ef2742f8b..0000000000
--- a/documentation/ref-manual/migration-3.0.rst
+++ /dev/null
@@ -1,320 +0,0 @@
1Moving to the Yocto Project 3.0 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 3.0 Release from the prior release.
6
7.. _migration-3.0-init-system-selection:
8
9Init System Selection
10---------------------
11
12Changing the init system manager previously required setting a number of
13different variables. You can now change the manager by setting the
14``INIT_MANAGER`` variable and the corresponding include files (i.e.
15``conf/distro/include/init-manager-*.conf``). Include files are provided
16for four values: "none", "sysvinit", "systemd", and "mdev-busybox". The
17default value, "none", for ``INIT_MANAGER`` should allow your current
18settings to continue working. However, it is advisable to explicitly set
19``INIT_MANAGER``.
20
21.. _migration-3.0-lsb-support-removed:
22
23LSB Support Removed
24-------------------
25
26Linux Standard Base (LSB) as a standard is not current, and is not well
27suited for embedded applications. Support can be continued in a separate
28layer if needed. However, presently LSB support has been removed from
29the core.
30
31As a result of this change, the ``poky-lsb`` derivative distribution
32configuration that was also used for testing alternative configurations
33has been replaced with a ``poky-altcfg`` distribution that has LSB parts
34removed.
35
36.. _migration-3.0-removed-recipes:
37
38Removed Recipes
39---------------
40
41The following recipes have been removed.
42
43- ``core-image-lsb-dev``: Part of removed LSB support.
44
45- ``core-image-lsb``: Part of removed LSB support.
46
47- ``core-image-lsb-sdk``: Part of removed LSB support.
48
49- ``cve-check-tool``: Functionally replaced by the ``cve-update-db``
50 recipe and ``cve-check`` class.
51
52- ``eglinfo``: No longer maintained. ``eglinfo`` from ``mesa-demos`` is
53 an adequate and maintained alternative.
54
55- ``gcc-8.3``: Version 8.3 removed. Replaced by 9.2.
56
57- ``gnome-themes-standard``: Only needed by gtk+ 2.x, which has been
58 removed.
59
60- ``gtk+``: GTK+ 2 is obsolete and has been replaced by gtk+3.
61
62- ``irda-utils``: Has become obsolete. IrDA support has been removed
63 from the Linux kernel in version 4.17 and later.
64
65- ``libnewt-python``: ``libnewt`` Python support merged into main
66 ``libnewt`` recipe.
67
68- ``libsdl``: Replaced by newer ``libsdl2``.
69
70- ``libx11-diet``: Became obsolete.
71
72- ``libxx86dga``: Removed obsolete client library.
73
74- ``libxx86misc``: Removed. Library is redundant.
75
76- ``linux-yocto``: Version 5.0 removed, which is now redundant (5.2 /
77 4.19 present).
78
79- ``lsbinitscripts``: Part of removed LSB support.
80
81- ``lsb``: Part of removed LSB support.
82
83- ``lsbtest``: Part of removed LSB support.
84
85- ``openssl10``: Replaced by newer ``openssl`` version 1.1.
86
87- ``packagegroup-core-lsb``: Part of removed LSB support.
88
89- ``python-nose``: Removed the Python 2.x version of the recipe.
90
91- ``python-numpy``: Removed the Python 2.x version of the recipe.
92
93- ``python-scons``: Removed the Python 2.x version of the recipe.
94
95- ``source-highlight``: No longer needed.
96
97- ``stress``: Replaced by ``stress-ng``.
98
99- ``vulkan``: Split into ``vulkan-loader``, ``vulkan-headers``, and
100 ``vulkan-tools``.
101
102- ``weston-conf``: Functionality moved to ``weston-init``.
103
104.. _migration-3.0-packaging-changes:
105
106Packaging Changes
107-----------------
108
109The following packaging changes have occurred.
110
111- The `Epiphany <https://en.wikipedia.org/wiki/GNOME_Web>`__ browser
112 has been dropped from ``packagegroup-self-hosted`` as it has not been
113 needed inside ``build-appliance-image`` for quite some time and was
114 causing resource problems.
115
116- ``libcap-ng`` Python support has been moved to a separate
117 ``libcap-ng-python`` recipe to streamline the build process when the
118 Python bindings are not needed.
119
120- ``libdrm`` now packages the file ``amdgpu.ids`` into a separate
121 ``libdrm-amdgpu`` package.
122
123- ``python3``: The ``runpy`` module is now in the ``python3-core``
124 package as it is required to support the common "python3 -m" command
125 usage.
126
127- ``distcc`` now provides separate ``distcc-client`` and
128 ``distcc-server`` packages as typically one or the other are needed,
129 rather than both.
130
131- ``python*-setuptools`` recipes now separately package the
132 ``pkg_resources`` module in a ``python-pkg-resources`` /
133 ``python3-pkg-resources`` package as the module is useful independent
134 of the rest of the setuptools package. The main ``python-setuptools``
135 / ``python3-setuptools`` package depends on this new package so you
136 should only need to update dependencies unless you want to take
137 advantage of the increased granularity.
138
139.. _migration-3.0-cve-checking:
140
141CVE Checking
142------------
143
144``cve-check-tool`` has been functionally replaced by a new
145``cve-update-db`` recipe and functionality built into the ``cve-check``
146class. The result uses NVD JSON data feeds rather than the deprecated
147XML feeds that ``cve-check-tool`` was using, supports CVSSv3 scoring,
148and makes other improvements.
149
150Additionally, the ``CVE_CHECK_CVE_WHITELIST`` variable has been replaced
151by ``CVE_CHECK_WHITELIST``.
152
153.. _migration-3.0-bitbake-changes:
154
155Bitbake Changes
156---------------
157
158The following BitBake changes have occurred.
159
160- ``addtask`` statements now properly validate dependent tasks.
161 Previously, an invalid task was silently ignored. With this change,
162 the invalid task generates a warning.
163
164- Other invalid ``addtask`` and ``deltask`` usages now trigger these
165 warnings: "multiple target tasks arguments with addtask / deltask",
166 and "multiple before/after clauses".
167
168- The "multiconfig" prefix is now shortened to "mc". "multiconfig" will
169 continue to work, however it may be removed in a future release.
170
171- The ``bitbake -g`` command no longer generates a
172 ``recipe-depends.dot`` file as the contents (i.e. a reprocessed
173 version of ``task-depends.dot``) were confusing.
174
175- The ``bb.build.FuncFailed`` exception, previously raised by
176 ``bb.build.exec_func()`` when certain other exceptions have occurred,
177 has been removed. The real underlying exceptions will be raised
178 instead. If you have calls to ``bb.build.exec_func()`` in custom
179 classes or ``tinfoil-using`` scripts, any references to
180 ``bb.build.FuncFailed`` should be cleaned up.
181
182- Additionally, the ``bb.build.exec_func()`` no longer accepts the
183 "pythonexception" parameter. The function now always raises
184 exceptions. Remove this argument in any calls to
185 ``bb.build.exec_func()`` in custom classes or scripts.
186
187- The
188 :term:`bitbake:BB_SETSCENE_VERIFY_FUNCTION2`
189 is no longer used. In the unlikely event that you have any references
190 to it, they should be removed.
191
192- The ``RunQueueExecuteScenequeue`` and ``RunQueueExecuteTasks`` events
193 have been removed since setscene tasks are now executed as part of
194 the normal runqueue. Any event handling code in custom classes or
195 scripts that handles these two events need to be updated.
196
197- The arguments passed to functions used with
198 :term:`bitbake:BB_HASHCHECK_FUNCTION`
199 have changed. If you are using your own custom hash check function,
200 see :yocto_git:`/poky/commit/?id=40a5e193c4ba45c928fccd899415ea56b5417725`
201 for details.
202
203- Task specifications in ``BB_TASKDEPDATA`` and class implementations
204 used in signature generator classes now use "<fn>:<task>" everywhere
205 rather than the "." delimiter that was being used in some places.
206 This change makes it consistent with all areas in the code. Custom
207 signature generator classes and code that reads ``BB_TASKDEPDATA``
208 need to be updated to use ':' as a separator rather than '.'.
209
210.. _migration-3.0-sanity-checks:
211
212Sanity Checks
213-------------
214
215The following sanity check changes occurred.
216
217- :term:`SRC_URI` is now checked for usage of two
218 problematic items:
219
220 - "${PN}" prefix/suffix use - Warnings always appear if ${PN} is
221 used. You must fix the issue regardless of whether multiconfig or
222 anything else that would cause prefixing/suffixing to happen.
223
224 - Github archive tarballs - these are not guaranteed to be stable.
225 Consequently, it is likely that the tarballs will be refreshed and
226 thus the SRC_URI checksums will fail to apply. It is recommended
227 that you fetch either an official release tarball or a specific
228 revision from the actual Git repository instead.
229
230 Either one of these items now trigger a warning by default. If you
231 wish to disable this check, remove ``src-uri-bad`` from
232 :term:`WARN_QA`.
233
234- The ``file-rdeps`` runtime dependency check no longer expands
235 :term:`RDEPENDS` recursively as there is no mechanism
236 to ensure they can be fully computed, and thus races sometimes result
237 in errors either showing up or not. Thus, you might now see errors
238 for missing runtime dependencies that were previously satisfied
239 recursively. Here is an example: package A contains a shell script
240 starting with ``#!/bin/bash`` but has no dependency on bash. However,
241 package A depends on package B, which does depend on bash. You need
242 to add the missing dependency or dependencies to resolve the warning.
243
244- Setting ``DEPENDS_${PN}`` anywhere (i.e. typically in a recipe) now
245 triggers an error. The error is triggered because
246 :term:`DEPENDS` is not a package-specific variable
247 unlike RDEPENDS. You should set ``DEPENDS`` instead.
248
249- systemd currently does not work well with the musl C library because
250 only upstream officially supports linking the library with glibc.
251 Thus, a warning is shown when building systemd in conjunction with
252 musl.
253
254.. _migration-3.0-miscellaneous-changes:
255
256Miscellaneous Changes
257---------------------
258
259The following miscellaneous changes have occurred.
260
261- The ``gnome`` class has been removed because it now does very little.
262 You should update recipes that previously inherited this class to do
263 the following: inherit gnomebase gtk-icon-cache gconf mime
264
265- The ``meta/recipes-kernel/linux/linux-dtb.inc`` file has been
266 removed. This file was previously deprecated in favor of setting
267 :term:`KERNEL_DEVICETREE` in any kernel
268 recipe and only produced a warning. Remove any ``include`` or
269 ``require`` statements pointing to this file.
270
271- :term:`TARGET_CFLAGS`,
272 :term:`TARGET_CPPFLAGS`,
273 :term:`TARGET_CXXFLAGS`, and
274 :term:`TARGET_LDFLAGS` are no longer exported
275 to the external environment. This change did not require any changes
276 to core recipes, which is a good indicator that no changes will be
277 required. However, if for some reason the software being built by one
278 of your recipes is expecting these variables to be set, then building
279 the recipe will fail. In such cases, you must either export the
280 variable or variables in the recipe or change the scripts so that
281 exporting is not necessary.
282
283- You must change the host distro identifier used in
284 :term:`NATIVELSBSTRING` to use all lowercase
285 characters even if it does not contain a version number. This change
286 is necessary only if you are not using ``uninative`` and
287 :term:`SANITY_TESTED_DISTROS`.
288
289- In the ``base-files`` recipe, writing the hostname into
290 ``/etc/hosts`` and ``/etc/hostname`` is now done within the main
291 :ref:`ref-tasks-install` function rather than in the
292 ``do_install_basefilesissue`` function. The reason for the change is
293 because ``do_install_basefilesissue`` is more easily overridden
294 without having to duplicate the hostname functionality. If you have
295 done the latter (e.g. in a ``base-files`` bbappend), then you should
296 remove it from your customized ``do_install_basefilesissue``
297 function.
298
299- The ``wic --expand`` command now uses commas to separate "key:value"
300 pairs rather than hyphens.
301
302 .. note::
303
304 The wic command-line help is not updated.
305
306 You must update any scripts or commands where you use
307 ``wic --expand`` with multiple "key:value" pairs.
308
309- UEFI image variable settings have been moved from various places to a
310 central ``conf/image-uefi.conf``. This change should not influence
311 any existing configuration as the ``meta/conf/image-uefi.conf`` in
312 the core metadata sets defaults that can be overridden in the same
313 manner as before.
314
315- ``conf/distro/include/world-broken.inc`` has been removed. For cases
316 where certain recipes need to be disabled when using the musl C
317 library, these recipes now have ``COMPATIBLE_HOST_libc-musl`` set
318 with a comment that explains why.
319
320
diff --git a/documentation/ref-manual/migration-3.1.rst b/documentation/ref-manual/migration-3.1.rst
deleted file mode 100644
index 4fcd2490d3..0000000000
--- a/documentation/ref-manual/migration-3.1.rst
+++ /dev/null
@@ -1,276 +0,0 @@
1Moving to the Yocto Project 3.1 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 3.1 Release from the prior release.
6
7.. _migration-3.1-minimum-system-requirements:
8
9Minimum system requirements
10---------------------------
11
12The following versions / requirements of build host components have been
13updated:
14
15- gcc 5.0
16
17- python 3.5
18
19- tar 1.28
20
21- ``rpcgen`` is now required on the host (part of the ``libc-dev-bin``
22 package on Ubuntu, Debian and related distributions, and the
23 ``glibc`` package on RPM-based distributions).
24
25Additionally, the ``makeinfo`` and ``pod2man`` tools are *no longer*
26required on the host.
27
28.. _migration-3.1-mpc8315e-rdb-removed:
29
30mpc8315e-rdb machine removed
31----------------------------
32
33The MPC8315E-RDB machine is old/obsolete and unobtainable, thus given
34the maintenance burden the ``mpc8315e-rdb`` machine configuration that
35supported it has been removed in this release. The removal does leave a
36gap in official PowerPC reference hardware support; this may change in
37future if a suitable machine with accompanying support resources is
38found.
39
40.. _migration-3.1-python-2-removed:
41
42Python 2 removed
43----------------
44
45Due to the expiration of upstream support in January 2020, support for
46Python 2 has now been removed; it is recommended that you use Python 3
47instead. If absolutely needed there is a meta-python2 community layer
48containing Python 2, related classes and various Python 2-based modules,
49however it should not be considered as supported.
50
51.. _migration-3.1-reproducible-builds:
52
53Reproducible builds now enabled by default
54------------------------------------------
55
56In order to avoid unnecessary differences in output files (aiding binary
57reproducibility), the Poky distribution configuration
58(``DISTRO = "poky"``) now inherits the ``reproducible_build`` class by
59default.
60
61.. _migration-3.1-ptest-feature-impact:
62
63Impact of ptest feature is now more significant
64-----------------------------------------------
65
66The Poky distribution configuration (``DISTRO = "poky"``) enables ptests
67by default to enable runtime testing of various components. In this
68release, a dependency needed to be added that has resulted in a
69significant increase in the number of components that will be built just
70when building a simple image such as core-image-minimal. If you do not
71need runtime tests enabled for core components, then it is recommended
72that you remove "ptest" from
73:term:`DISTRO_FEATURES` to save a significant
74amount of build time e.g. by adding the following in your configuration:
75::
76
77 DISTRO_FEATURES_remove = "ptest"
78
79.. _migration-3.1-removed-recipes:
80
81Removed recipes
82---------------
83
84The following recipes have been removed:
85
86- ``chkconfig``: obsolete
87
88- ``console-tools``: obsolete
89
90- ``enchant``: replaced by ``enchant2``
91
92- ``foomatic-filters``: obsolete
93
94- ``libidn``: no longer needed, moved to meta-oe
95
96- ``libmodulemd``: replaced by ``libmodulemd-v1``
97
98- ``linux-yocto``: drop 4.19, 5.2 version recipes (5.4 now provided)
99
100- ``nspr``: no longer needed, moved to meta-oe
101
102- ``nss``: no longer needed, moved to meta-oe
103
104- ``python``: Python 2 removed (Python 3 preferred)
105
106- ``python-setuptools``: Python 2 version removed (python3-setuptools
107 preferred)
108
109- ``sysprof``: no longer needed, moved to meta-oe
110
111- ``texi2html``: obsolete
112
113- ``u-boot-fw-utils``: functionally replaced by ``libubootenv``
114
115.. _migration-3.1-features-check:
116
117features_check class replaces distro_features_check
118---------------------------------------------------
119
120The ``distro_features_check`` class has had its functionality expanded,
121now supporting ``ANY_OF_MACHINE_FEATURES``,
122``REQUIRED_MACHINE_FEATURES``, ``CONFLICT_MACHINE_FEATURES``,
123``ANY_OF_COMBINED_FEATURES``, ``REQUIRED_COMBINED_FEATURES``,
124``CONFLICT_COMBINED_FEATURES``. As a result the class has now been
125renamed to ``features_check``; the ``distro_features_check`` class still
126exists but generates a warning and redirects to the new class. In
127preparation for a future removal of the old class it is recommended that
128you update recipes currently inheriting ``distro_features_check`` to
129inherit ``features_check`` instead.
130
131.. _migration-3.1-removed-classes:
132
133Removed classes
134---------------
135
136The following classes have been removed:
137
138- ``distutils-base``: moved to meta-python2
139
140- ``distutils``: moved to meta-python2
141
142- ``libc-common``: merged into the glibc recipe as nothing else used
143 it.
144
145- ``python-dir``: moved to meta-python2
146
147- ``pythonnative``: moved to meta-python2
148
149- ``setuptools``: moved to meta-python2
150
151- ``tinderclient``: dropped as it was obsolete.
152
153.. _migration-3.1-src-uri-checksums:
154
155SRC_URI checksum behaviour
156--------------------------
157
158Previously, recipes by tradition included both SHA256 and MD5 checksums
159for remotely fetched files in :term:`SRC_URI`, even
160though only one is actually mandated. However, the MD5 checksum does not
161add much given its inherent weakness; thus when a checksum fails only
162the SHA256 sum will now be printed. The md5sum will still be verified if
163it is specified.
164
165.. _migration-3.1-npm:
166
167npm fetcher changes
168-------------------
169
170The npm fetcher has been completely reworked in this release. The npm
171fetcher now only fetches the package source itself and no longer the
172dependencies; there is now also an npmsw fetcher which explicitly
173fetches the shrinkwrap file and the dependencies. This removes the
174slightly awkward ``NPM_LOCKDOWN`` and ``NPM_SHRINKWRAP`` variables which
175pointed to local files; the lockdown file is no longer needed at all.
176Additionally, the package name in ``npm://`` entries in
177:term:`SRC_URI` is now specified using a ``package``
178parameter instead of the earlier ``name`` which overlapped with the
179generic ``name`` parameter. All recipes using the npm fetcher will need
180to be changed as a result.
181
182An example of the new scheme: ::
183
184 SRC_URI = "npm://registry.npmjs.org;package=array-flatten;version=1.1.1 \
185 npmsw://${THISDIR}/npm-shrinkwrap.json"
186
187Another example where the sources are fetched from git rather than an npm repository: ::
188
189 SRC_URI = "git://github.com/foo/bar.git;protocol=https \
190 npmsw://${THISDIR}/npm-shrinkwrap.json"
191
192devtool and recipetool have also been updated to match with the npm
193fetcher changes. Other than producing working and more complete recipes
194for npm sources, there is also a minor change to the command line for
195devtool: the ``--fetch-dev`` option has been renamed to ``--npm-dev`` as
196it is npm-specific.
197
198.. _migration-3.1-packaging-changes:
199
200Packaging changes
201-----------------
202
203- ``intltool`` has been removed from ``packagegroup-core-sdk`` as it is
204 rarely needed to build modern software - gettext can do most of the
205 things it used to be needed for. ``intltool`` has also been removed
206 from ``packagegroup-core-self-hosted`` as it is not needed to for
207 standard builds.
208
209- git: ``git-am``, ``git-difftool``, ``git-submodule``, and
210 ``git-request-pull`` are no longer perl-based, so are now installed
211 with the main ``git`` package instead of within ``git-perltools``.
212
213- The ``ldconfig`` binary built as part of glibc has now been moved to
214 its own ``ldconfig`` package (note no ``glibc-`` prefix). This
215 package is in the :term:`RRECOMMENDS` of the main
216 ``glibc`` package if ``ldconfig`` is present in
217 :term:`DISTRO_FEATURES`.
218
219- ``libevent`` now splits each shared library into its own package (as
220 Debian does). Since these are shared libraries and will be pulled in
221 through the normal shared library dependency handling, there should
222 be no impact to existing configurations other than less unnecessary
223 libraries being installed in some cases.
224
225- linux-firmware now has a new package for ``bcm4366c`` and includes
226 available NVRAM config files into the ``bcm43340``, ``bcm43362``,
227 ``bcm43430`` and ``bcm4356-pcie`` packages.
228
229- ``harfbuzz`` now splits the new ``libharfbuzz-subset.so`` library
230 into its own package to reduce the main package size in cases where
231 ``libharfbuzz-subset.so`` is not needed.
232
233.. _migration-3.1-package-qa-warnings:
234
235Additional warnings
236-------------------
237
238Warnings will now be shown at ``do_package_qa`` time in the following
239circumstances:
240
241- A recipe installs ``.desktop`` files containing ``MimeType`` keys but
242 does not inherit the new ``mime-xdg`` class
243
244- A recipe installs ``.xml`` files into ``${datadir}/mime/packages``
245 but does not inherit the ``mime`` class
246
247.. _migration-3.1-x86-live-wic:
248
249``wic`` image type now used instead of ``live`` by default for x86
250------------------------------------------------------------------
251
252``conf/machine/include/x86-base.inc`` (inherited by most x86 machine
253configurations) now specifies ``wic`` instead of ``live`` by default in
254:term:`IMAGE_FSTYPES`. The ``live`` image type will
255likely be removed in a future release so it is recommended that you use
256``wic`` instead.
257
258.. _migration-3.1-misc:
259
260Miscellaneous changes
261---------------------
262
263- The undocumented ``SRC_DISTRIBUTE_LICENSES`` variable has now been
264 removed in favour of a new ``AVAILABLE_LICENSES`` variable which is
265 dynamically set based upon license files found in
266 ``${COMMON_LICENSE_DIR}`` and ``${LICENSE_PATH}``.
267
268- The tune definition for big-endian microblaze machines is now
269 ``microblaze`` instead of ``microblazeeb``.
270
271- ``newlib`` no longer has built-in syscalls. ``libgloss`` should then
272 provide the syscalls, ``crt0.o`` and other functions that are no
273 longer part of ``newlib`` itself. If you are using
274 ``TCLIBC = "newlib"`` this now means that you must link applications
275 with both ``newlib`` and ``libgloss``, whereas before ``newlib``
276 would run in many configurations by itself.
diff --git a/documentation/ref-manual/migration-3.2.rst b/documentation/ref-manual/migration-3.2.rst
deleted file mode 100644
index 65a9ff4cac..0000000000
--- a/documentation/ref-manual/migration-3.2.rst
+++ /dev/null
@@ -1,313 +0,0 @@
1Moving to the Yocto Project 3.2 Release
2=======================================
3
4This section provides migration information for moving to the Yocto
5Project 3.2 Release from the prior release.
6
7.. _migration-3.2-minimum-system-requirements:
8
9Minimum system requirements
10---------------------------
11
12``gcc`` version 6.0 is now required at minimum on the build host. For older
13host distributions where this is not available, you can use the
14``buildtools-extended-tarball`` (easily installable using
15``scripts/install-buildtools``).
16
17
18.. _migration-3.2-removed-recipes:
19
20Removed recipes
21---------------
22
23The following recipes have been removed:
24
25- ``bjam-native``: replaced by ``boost-build-native``
26- ``avahi-ui``: folded into the main ``avahi`` recipe - the GTK UI can be disabled using :term:`PACKAGECONFIG` for ``avahi``.
27- ``build-compare``: no longer needed with the removal of the ``packagefeed-stability`` class
28- ``dhcp``: obsolete, functionally replaced by ``dhcpcd`` and ``kea``
29- ``libmodulemd-v1``: replaced by ``libmodulemd``
30- ``packagegroup-core-device-devel``: obsolete
31
32
33.. _migration-3.2-removed-classes:
34
35Removed classes
36---------------
37
38The following classes (.bbclass files) have been removed:
39
40- ``spdx``: obsolete - the Yocto Project is a strong supporter of SPDX, but this class was old code using a dated approach and had the potential to be misleading. The ``meta-sdpxscanner`` layer is a much more modern and active approach to handling this and is recommended as a replacement.
41
42- ``packagefeed-stability``: this class had become obsolete with the advent of hash equivalence and reproducible builds.
43
44
45pseudo path filtering and mismatch behaviour
46--------------------------------------------
47
48pseudo now operates on a filtered subset of files. This is a significant change
49to the way pseudo operates within OpenEmbedded - by default, pseudo monitors and
50logs (adds to its database) any file created or modified whilst in a ``fakeroot``
51environment. However, there are large numbers of files that we simply don't care
52about the permissions of whilst in that ``fakeroot`` context, for example ${:term:`S`}, ${:term:`B`}, ${:term:`T`},
53${:term:`SSTATE_DIR`}, the central sstate control directories, and others.
54
55As of this release, new functionality in pseudo is enabled to ignore these
56directory trees (controlled using a new :term:`PSEUDO_IGNORE_PATHS` variable)
57resulting in a cleaner database with less chance of "stray" mismatches if files
58are modified outside pseudo context. It also should reduce some overhead from
59pseudo as the interprocess round trip to the server is avoided.
60
61There is a possible complication where some existing recipe may break, for
62example, a recipe was found to be writing to ``${B}/install`` for
63``make install`` in ``do_install`` and since ``${B}`` is listed as not to be tracked,
64there were errors trying to ``chown root`` for files in this location. Another
65example was the ``tcl`` recipe where the source directory ``S`` is set to a
66subdirectory of the source tree but files were written out to the directory
67structure above that subdirectory. For these types of cases in your own recipes,
68extend ``PSEUDO_IGNORE_PATHS`` to cover additional paths that pseudo should not
69be monitoring.
70
71In addition, pseudo's behaviour on mismatches has now been changed - rather
72than doing what turns out to be a rather dangerous "fixup" if it sees a file
73with a different path but the same inode as another file it has previously seen,
74pseudo will throw an ``abort()`` and direct you to a :yocto_wiki:`wiki page </Pseudo_Abort>`
75that explains how to deal with this.
76
77
78.. _migration-3.2-multilib-mlprefix:
79
80``MLPREFIX`` now required for multilib when runtime dependencies conditionally added
81------------------------------------------------------------------------------------
82
83In order to solve some previously intractable problems with runtime
84dependencies and multilib, a change was made that now requires the :term:`MLPREFIX`
85value to be explicitly prepended to package names being added as
86dependencies (e.g. in :term:`RDEPENDS` and :term:`RRECOMMENDS` values)
87where the dependency is conditionally added.
88
89If you have anonymous python or in-line python conditionally adding
90dependencies in your custom recipes, and you intend for those recipes to
91work with multilib, then you will need to ensure that ``${MLPREFIX}``
92is prefixed on the package names in the dependencies, for example
93(from the ``glibc`` recipe): ::
94
95 RRECOMMENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
96
97This also applies when conditionally adding packages to :term:`PACKAGES` where
98those packages have dependencies, for example (from the ``alsa-plugins`` recipe): ::
99
100 PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'alsa-plugins-pulseaudio-conf', '', d)}"
101 ...
102 RDEPENDS_${PN}-pulseaudio-conf += "\
103 ${MLPREFIX}libasound-module-conf-pulse \
104 ${MLPREFIX}libasound-module-ctl-pulse \
105 ${MLPREFIX}libasound-module-pcm-pulse \
106 "
107
108
109.. _migration-3.2-packagegroup-core-device-devel:
110
111packagegroup-core-device-devel no longer included in images built for qemu* machines
112------------------------------------------------------------------------------------
113
114``packagegroup-core-device-devel`` was previously added automatically to
115images built for ``qemu*`` machines, however the purpose of the group and what
116it should contain is no longer clear, and in general, adding userspace
117development items to images is best done at the image/class level; thus this
118packagegroup was removed.
119
120This packagegroup previously pulled in the following:
121
122- ``distcc-config``
123- ``nfs-export-root``
124- ``bash``
125- ``binutils-symlinks``
126
127If you still need any of these in your image built for a ``qemu*`` machine
128then you will add them explicitly to :term:`IMAGE_INSTALL` or another
129appropriate place in the dependency chain for your image (if you have not
130already done so).
131
132
133.. _migration-3.2-dhcp:
134
135DHCP server/client replaced
136---------------------------
137
138The ``dhcp`` software package has become unmaintained and thus has been
139functionally replaced by ``dhcpcd`` (client) and ``kea`` (server). You will
140need to replace references to the recipe/package names as appropriate - most
141commonly, at the package level ``dhcp-client`` should be replaced by
142``dhcpcd`` and ``dhcp-server`` should be replaced by ``kea``. If you have any
143custom configuration files for these they will need to be adapted - refer to
144the upstream documentation for ``dhcpcd`` and ``kea`` for further details.
145
146
147.. _migration-3.2-packaging-changes:
148
149Packaging changes
150-----------------
151
152- ``python3``: the ``urllib`` python package has now moved into the core package, as it is used more commonly than just netclient (e.g. email, xml, mimetypes, pydoc). In addition, the ``pathlib`` module is now also part of the core package.
153
154- ``iptables``: ``iptables-apply`` and ``ip6tables-apply`` have been split out to their own package to avoid a bash dependency in the main ``iptables`` package
155
156
157.. _migration-3.2-package-qa-checks:
158
159Package QA check changes
160------------------------
161
162Previously, the following package QA checks triggered warnings, however they can
163be indicators of genuine underlying problems and are therefore now treated as
164errors:
165
166- :ref:`already-stripped <qa-check-already-stripped>`
167- :ref:`compile-host-path <qa-check-compile-host-path>`
168- :ref:`installed-vs-shipped <qa-check-installed-vs-shipped>`
169- :ref:`ldflags <qa-check-ldflags>`
170- :ref:`pn-overrides <qa-check-pn-overrides>`
171- :ref:`rpaths <qa-check-rpaths>`
172- :ref:`staticdev <qa-check-staticdev>`
173- :ref:`unknown-configure-option <qa-check-unknown-configure-option>`
174- :ref:`useless-rpaths <qa-check-useless-rpaths>`
175
176In addition, the following new checks were added and default to triggering an error:
177
178- :ref:`shebang-size <qa-check-shebang-size>`: Check for shebang (#!) lines longer than 128 characters, which can give an error at runtime depending on the operating system.
179
180- :ref:`unhandled-features-check <qa-check-unhandled-features-check>`: Check if any of the variables supported by the :ref:`features_check <ref-classes-features_check>` class is set while not inheriting the class itself.
181
182- :ref:`missing-update-alternatives <qa-check-missing-update-alternatives>`: Check if the recipe sets the :term:`ALTERNATIVE` variable for any of its packages, and does not inherit the :ref:`update-alternatives <ref-classes-update-alternatives>` class.
183
184- A trailing slash or duplicated slashes in the value of :term:`S` or :term:`B` will now trigger a warning so that they can be removed and path comparisons can be more reliable - remove any instances of these in your recipes if the warning is displayed.
185
186
187.. _migration-3.2-src-uri-file-globbing:
188
189Globbing no longer supported in ``file://`` entries in ``SRC_URI``
190------------------------------------------------------------------
191
192Globbing (``*`` and ``?`` wildcards) in ``file://`` URLs within :term:`SRC_URI`
193did not properly support file checksums, thus changes to the source files
194would not always change the do_fetch task checksum, and consequently would
195not ensure that the changed files would be incorporated in subsequent builds.
196
197Unfortunately it is not practical to make globbing work generically here, so
198the decision was taken to remove support for globs in ``file://`` URLs.
199If you have any usage of these in your recipes, then you will now need to
200either add each of the files that you expect to match explicitly, or
201alternatively if you still need files to be pulled in dynamically, put the
202files into a subdirectory and reference that instead.
203
204
205.. _migration-3.2-deploydir-clean:
206
207deploy class now cleans ``DEPLOYDIR`` before ``do_deploy``
208----------------------------------------------------------
209
210``do_deploy`` as implemented in the :ref:`deploy <ref-classes-deploy>` class now cleans up ${:term:`DEPLOYDIR`} before running, just as ``do_install`` cleans up ${:term:`D`} before running. This reduces the risk of ``DEPLOYDIR`` being accidentally contaminated by files from previous runs, possibly even with different config, in case of incremental builds.
211
212Most recipes and classes that inherit the ``deploy`` class or interact with ``do_deploy`` are unlikely to be affected by this unless they add ``prefuncs`` to ``do_deploy`` *which also* put files into ``${DEPLOYDIR}`` - these should be refactored to use ``do_deploy_prepend`` instead.
213
214
215.. _migration-3.2-nativesdk-sdk-provides-dummy:
216
217Custom SDK / SDK-style recipes need to include ``nativesdk-sdk-provides-dummy``
218-------------------------------------------------------------------------------
219
220All ``nativesdk`` packages require ``/bin/sh`` due to their postinstall scriptlets, thus this package has to be dummy-provided within the SDK and ``nativesdk-sdk-provides-dummy`` now does this. If you have a custom SDK recipe (or your own SDK-style recipe similar to e.g. ``buildtools-tarball``), you will need to ensure ``nativesdk-sdk-provides-dummy`` or an equivalent is included in :term:`TOOLCHAIN_HOST_TASK`.
221
222
223``ld.so.conf`` now moved back to main ``glibc`` package
224-------------------------------------------------------
225
226There are cases where one doesn't want ``ldconfig`` on target (e.g. for
227read-only root filesystems, it's rather pointless), yet one still
228needs ``/etc/ld.so.conf`` to be present at image build time:
229
230When some recipe installs libraries to a non-standard location, and
231therefore installs in a file in ``/etc/ld.so.conf.d/foo.conf``, we
232need ``/etc/ld.so.conf`` containing: ::
233
234 include /etc/ld.so.conf.d/*.conf
235
236in order to get those other locations picked up.
237
238Thus ``/etc/ld.so.conf`` is now in the main ``glibc`` package so that
239there's always an ``ld.so.conf`` present when the build-time ``ldconfig``
240runs towards the end of image construction.
241
242The ``ld.so.conf`` and ``ld.so.conf.d/*.conf`` files do not take up
243significant space (at least not compared to the ~700kB ``ldconfig`` binary), and they
244might be needed in case ``ldconfig`` is installable, so they are left
245in place after the image is built. Technically it would be possible to
246remove them if desired, though it would not be trivial if you still
247wanted the build-time ldconfig to function (:term:`ROOTFS_POSTPROCESS_COMMAND`
248will not work as ``ldconfig`` is run after the functions referred to
249by that variable).
250
251
252.. _migration-3.2-virgl:
253
254Host DRI drivers now used for GL support within ``runqemu``
255-----------------------------------------------------------
256
257``runqemu`` now uses the mesa-native libraries everywhere virgl is used
258(i.e. when ``gl``, ``gl-es`` or ``egl-headless`` options are specified),
259but instructs them to load DRI drivers from the host. Unfortunately this
260may not work well with proprietary graphics drivers such as those from
261Nvidia; if you are using such drivers then you may need to switch to an
262alternative (such as Nouveau in the case of Nvidia hardware) or avoid
263using the GL options.
264
265
266.. _migration-3.2-initramfs-suffix:
267
268initramfs images now use a blank suffix
269---------------------------------------
270
271The reference initramfs images (``core-image-minimal-initramfs``,
272``core-image-tiny-initramfs`` and ``core-image-testmaster-initramfs``) now
273set an empty string for :term:`IMAGE_NAME_SUFFIX`, which otherwise defaults
274to ``".rootfs"``. These images aren't root filesystems and thus the rootfs
275label didn't make sense. If you are looking for the output files generated
276by these image recipes directly then you will need to adapt to the new
277naming without the ``.rootfs`` part.
278
279
280.. _migration-3.2-image-artifact-names:
281
282Image artifact name variables now centralised in image-artifact-names class
283---------------------------------------------------------------------------
284
285The defaults for the following image artifact name variables have been moved
286from bitbake.conf to a new ``image-artifact-names`` class:
287
288- :term:`IMAGE_BASENAME`
289- :term:`IMAGE_LINK_NAME`
290- :term:`IMAGE_NAME`
291- :term:`IMAGE_NAME_SUFFIX`
292- :term:`IMAGE_VERSION_SUFFIX`
293
294Image-related classes now inherit this class, and typically these variables
295are only referenced within image recipes so those will be unaffected by this
296change. However if you have references to these variables in either a recipe
297that is not an image or a class that is enabled globally, then those will
298now need to be changed to ``inherit image-artifact-names``.
299
300
301.. _migration-3.2-misc:
302
303Miscellaneous changes
304---------------------
305
306- Support for the long-deprecated ``PACKAGE_GROUP`` variable has now been removed - replace any remaining instances with :term:`FEATURE_PACKAGES`.
307- The ``FILESPATHPKG`` variable, having been previously deprecated, has now been removed. Replace any remaining references with appropriate use of :term:`FILESEXTRAPATHS`.
308- Erroneous use of ``inherit +=`` (instead of ``INHERIT +=``) in a configuration file now triggers an error instead of silently being ignored.
309- ptest support has been removed from the ``kbd`` recipe, as upstream has moved to autotest which is difficult to work with in a cross-compilation environment.
310- ``oe.utils.is_machine_specific()`` and ``oe.utils.machine_paths()`` have been removed as their utility was questionable. In the unlikely event that you have references to these in your own code, then the code will need to be reworked.
311- The ``i2ctransfer`` module is now disabled by default when building ``busybox`` in order to be consistent with disabling the other i2c tools there. If you do wish the i2ctransfer module to be built in busybox then add ``CONFIG_I2CTRANSFER=y`` to your custom busybox configuration.
312- In the ``Upstream-Status`` header convention for patches, ``Accepted`` has been replaced with ``Backport`` as these almost always mean the same thing i.e. the patch is already upstream and may need to be removed in a future recipe upgrade. If you are adding these headers to your own patches then use ``Backport`` to indicate that the patch has been sent upstream.
313- The ``tune-supersparc.inc`` tune file has been removed as it does not appear to be widely used and no longer works.
diff --git a/documentation/ref-manual/migration-general.rst b/documentation/ref-manual/migration-general.rst
deleted file mode 100644
index 182482ec43..0000000000
--- a/documentation/ref-manual/migration-general.rst
+++ /dev/null
@@ -1,54 +0,0 @@
1General Migration Considerations
2================================
3
4Some considerations are not tied to a specific Yocto Project release.
5This section presents information you should consider when migrating to
6any new Yocto Project release.
7
8- *Dealing with Customized Recipes*:
9
10 Issues could arise if you take
11 older recipes that contain customizations and simply copy them
12 forward expecting them to work after you migrate to new Yocto Project
13 metadata. For example, suppose you have a recipe in your layer that
14 is a customized version of a core recipe copied from the earlier
15 release, rather than through the use of an append file. When you
16 migrate to a newer version of Yocto Project, the metadata (e.g.
17 perhaps an include file used by the recipe) could have changed in a
18 way that would break the build. Say, for example, a function is
19 removed from an include file and the customized recipe tries to call
20 that function.
21
22 You could "forward-port" all your customizations in your recipe so
23 that everything works for the new release. However, this is not the
24 optimal solution as you would have to repeat this process with each
25 new release if changes occur that give rise to problems.
26
27 The better solution (where practical) is to use append files
28 (``*.bbappend``) to capture any customizations you want to make to a
29 recipe. Doing so, isolates your changes from the main recipe making
30 them much more manageable. However, sometimes it is not practical to
31 use an append file. A good example of this is when introducing a
32 newer or older version of a recipe in another layer.
33
34- *Updating Append Files*:
35
36 Since append files generally only contain
37 your customizations, they often do not need to be adjusted for new
38 releases. However, if the ``.bbappend`` file is specific to a
39 particular version of the recipe (i.e. its name does not use the %
40 wildcard) and the version of the recipe to which it is appending has
41 changed, then you will at a minimum need to rename the append file to
42 match the name of the recipe file. A mismatch between an append file
43 and its corresponding recipe file (``.bb``) will trigger an error
44 during parsing.
45
46 Depending on the type of customization the append file applies, other
47 incompatibilities might occur when you upgrade. For example, if your
48 append file applies a patch and the recipe to which it is appending
49 is updated to a newer version, the patch might no longer apply. If
50 this is the case and assuming the patch is still needed, you must
51 modify the patch file so that it does apply.
52
53
54
diff --git a/documentation/ref-manual/migration.rst b/documentation/ref-manual/migration.rst
deleted file mode 100644
index 8d64a7daab..0000000000
--- a/documentation/ref-manual/migration.rst
+++ /dev/null
@@ -1,31 +0,0 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3******************************************
4Migrating to a Newer Yocto Project Release
5******************************************
6
7This chapter provides information you can use to migrate work to a newer
8Yocto Project release. You can find the same information in the release
9notes for a given release.
10
11.. toctree::
12
13 migration-general
14 migration-1.3
15 migration-1.4
16 migration-1.5
17 migration-1.6
18 migration-1.7
19 migration-1.8
20 migration-2.0
21 migration-2.1
22 migration-2.2
23 migration-2.3
24 migration-2.4
25 migration-2.5
26 migration-2.6
27 migration-2.7
28 migration-3.0
29 migration-3.1
30 migration-3.2
31
diff --git a/documentation/ref-manual/qa-checks.rst b/documentation/ref-manual/qa-checks.rst
index 6cb767d934..9dfbbff02d 100644
--- a/documentation/ref-manual/qa-checks.rst
+++ b/documentation/ref-manual/qa-checks.rst
@@ -28,7 +28,7 @@ error form along with an explanation.
28.. note:: 28.. note::
29 29
30 - At the end of each message, the name of the associated QA test (as 30 - At the end of each message, the name of the associated QA test (as
31 listed in the ":ref:`insane.bbclass <ref-classes-insane>`" 31 listed in the ":ref:`ref-classes-insane`"
32 section) appears within square brackets. 32 section) appears within square brackets.
33 33
34 - As mentioned, this list of error and warning messages is for QA 34 - As mentioned, this list of error and warning messages is for QA
@@ -43,120 +43,39 @@ error form along with an explanation.
43Errors and Warnings 43Errors and Warnings
44=================== 44===================
45 45
46.. _qa-check-libexec: 46.. _qa-check-already-stripped:
47
48- ``<packagename>: <path> is using libexec please relocate to <libexecdir> [libexec]``
49
50 The specified package contains files in ``/usr/libexec`` when the
51 distro configuration uses a different path for ``<libexecdir>`` By
52 default, ``<libexecdir>`` is ``$prefix/libexec``. However, this
53 default can be changed (e.g. ``${libdir}``).
54
55  
56.. _qa-check-rpaths:
57
58- ``package <packagename> contains bad RPATH <rpath> in file <file> [rpaths]``
59
60 The specified binary produced by the recipe contains dynamic library
61 load paths (rpaths) that contain build system paths such as
62 :term:`TMPDIR`, which are incorrect for the target and
63 could potentially be a security issue. Check for bad ``-rpath``
64 options being passed to the linker in your
65 :ref:`ref-tasks-compile` log. Depending on the build
66 system used by the software being built, there might be a configure
67 option to disable rpath usage completely within the build of the
68 software.
69
70  
71.. _qa-check-useless-rpaths:
72
73- ``<packagename>: <file> contains probably-redundant RPATH <rpath> [useless-rpaths]``
74
75 The specified binary produced by the recipe contains dynamic library
76 load paths (rpaths) that on a standard system are searched by default
77 by the linker (e.g. ``/lib`` and ``/usr/lib``). While these paths
78 will not cause any breakage, they do waste space and are unnecessary.
79 Depending on the build system used by the software being built, there
80 might be a configure option to disable rpath usage completely within
81 the build of the software.
82
83  
84.. _qa-check-file-rdeps:
85
86- ``<packagename> requires <files>, but no providers in its RDEPENDS [file-rdeps]``
87
88 A file-level dependency has been identified from the specified
89 package on the specified files, but there is no explicit
90 corresponding entry in :term:`RDEPENDS`. If
91 particular files are required at runtime then ``RDEPENDS`` should be
92 declared in the recipe to ensure the packages providing them are
93 built.
94
95  
96.. _qa-check-build-deps:
97
98- ``<packagename1> rdepends on <packagename2>, but it isn't a build dependency? [build-deps]``
99
100 A runtime dependency exists between the two specified packages, but
101 there is nothing explicit within the recipe to enable the
102 OpenEmbedded build system to ensure that dependency is satisfied.
103 This condition is usually triggered by an
104 :term:`RDEPENDS` value being added at the packaging
105 stage rather than up front, which is usually automatic based on the
106 contents of the package. In most cases, you should change the recipe
107 to add an explicit ``RDEPENDS`` for the dependency.
108
109  
110.. _qa-check-dev-so:
111
112- ``non -dev/-dbg/nativesdk- package contains symlink .so: <packagename> path '<path>' [dev-so]``
113
114 Symlink ``.so`` files are for development only, and should therefore
115 go into the ``-dev`` package. This situation might occur if you add
116 ``*.so*`` rather than ``*.so.*`` to a non-dev package. Change
117 :term:`FILES` (and possibly
118 :term:`PACKAGES`) such that the specified ``.so``
119 file goes into an appropriate ``-dev`` package.
120
121  
122.. _qa-check-staticdev:
123
124- ``non -staticdev package contains static .a library: <packagename> path '<path>' [staticdev]``
125 47
126 Static ``.a`` library files should go into a ``-staticdev`` package. 48``already-stripped``
127 Change :term:`FILES` (and possibly 49--------------------
128 :term:`PACKAGES`) such that the specified ``.a`` file
129 goes into an appropriate ``-staticdev`` package.
130 50
131   51``File '<file>' from <recipename> was already stripped, this will prevent future debugging! [already-stripped]``
132.. _qa-check-libdir:
133 52
134- ``<packagename>: found library in wrong location [libdir]`` 53Produced binaries have already been stripped prior to the build
54system extracting debug symbols. It is common for upstream software
55projects to default to stripping debug symbols for output binaries.
56In order for debugging to work on the target using ``-dbg`` packages,
57this stripping must be disabled.
135 58
136 The specified file may have been installed into an incorrect 59Depending on the build system used by the software being built,
137 (possibly hardcoded) installation path. For example, this test will 60disabling this stripping could be as easy as specifying an additional
138 catch recipes that install ``/lib/bar.so`` when ``${base_libdir}`` is 61configure option. If not, disabling stripping might involve patching
139 "lib32". Another example is when recipes install 62the build scripts. In the latter case, look for references to "strip"
140 ``/usr/lib64/foo.so`` when ``${libdir}`` is "/usr/lib". False 63or "STRIP", or the "-s" or "-S" command-line options being specified
141 positives occasionally exist. For these cases add "libdir" to 64on the linker command line (possibly through the compiler command
142 :term:`INSANE_SKIP` for the package. 65line if preceded with "-Wl,").
143 66
144   67.. note::
145.. _qa-check-debug-files:
146
147- ``non debug package contains .debug directory: <packagename> path <path> [debug-files]``
148 68
149 The specified package contains a ``.debug`` directory, which should 69 Disabling stripping here does not mean that the final packaged
150 not appear in anything but the ``-dbg`` package. This situation might 70 binaries will be unstripped. Once the OpenEmbedded build system
151 occur if you add a path which contains a ``.debug`` directory and do 71 splits out debug symbols to the ``-dbg`` package, it will then
152 not explicitly add the ``.debug`` directory to the ``-dbg`` package. 72 strip the symbols from the binaries.
153 If this is the case, add the ``.debug`` directory explicitly to
154 ``FILES_${PN}-dbg``. See :term:`FILES` for additional
155 information on ``FILES``.
156 73
157  
158.. _qa-check-arch: 74.. _qa-check-arch:
159 75
76``arch``
77--------
78
160- ``Architecture did not match (<file_arch>, expected <machine_arch>) in <file> [arch]`` 79- ``Architecture did not match (<file_arch>, expected <machine_arch>) in <file> [arch]``
161 80
162 By default, the OpenEmbedded build system checks the Executable and 81 By default, the OpenEmbedded build system checks the Executable and
@@ -173,8 +92,6 @@ Errors and Warnings
173 option is to check the :ref:`ref-tasks-compile` log 92 option is to check the :ref:`ref-tasks-compile` log
174 and verify that the compiler options being used are correct. 93 and verify that the compiler options being used are correct.
175 94
176  
177
178- ``Bit size did not match (<file_bits>, expected <machine_bits>) in <file> [arch]`` 95- ``Bit size did not match (<file_bits>, expected <machine_bits>) in <file> [arch]``
179 96
180 By default, the OpenEmbedded build system checks the Executable and 97 By default, the OpenEmbedded build system checks the Executable and
@@ -191,8 +108,6 @@ Errors and Warnings
191 option is to check the :ref:`ref-tasks-compile` log 108 option is to check the :ref:`ref-tasks-compile` log
192 and verify that the compiler options being used are correct. 109 and verify that the compiler options being used are correct.
193 110
194  
195
196- ``Endianness did not match (<file_endianness>, expected <machine_endianness>) in <file> [arch]`` 111- ``Endianness did not match (<file_endianness>, expected <machine_endianness>) in <file> [arch]``
197 112
198 By default, the OpenEmbedded build system checks the Executable and 113 By default, the OpenEmbedded build system checks the Executable and
@@ -209,243 +124,593 @@ Errors and Warnings
209 option is to check the :ref:`ref-tasks-compile` log 124 option is to check the :ref:`ref-tasks-compile` log
210 and verify that the compiler options being used are correct. 125 and verify that the compiler options being used are correct.
211 126
212   127.. _qa-check-build-deps:
213.. _qa-check-textrel:
214 128
215- ``ELF binary '<file>' has relocations in .text [textrel]`` 129``build-deps``
130--------------
216 131
217 The specified ELF binary contains relocations in its ``.text`` 132``<packagename1> rdepends on <packagename2>, but it isn't a build dependency? [build-deps]``
218 sections. This situation can result in a performance impact at
219 runtime.
220 133
221 Typically, the way to solve this performance issue is to add "-fPIC" 134There is a runtime dependency between the two specified packages, but
222 or "-fpic" to the compiler command-line options. For example, given 135there is nothing explicit within the recipe to enable the
223 software that reads :term:`CFLAGS` when you build it, 136OpenEmbedded build system to ensure that dependency is satisfied.
224 you could add the following to your recipe: 137This condition is usually triggered by an
225 :: 138:term:`RDEPENDS` value being added at the packaging
139stage rather than up front, which is usually automatic based on the
140contents of the package. In most cases, you should change the recipe
141to add an explicit :term:`RDEPENDS` for the dependency.
226 142
227 CFLAGS_append = " -fPIC " 143.. _qa-check-buildpaths:
228 144
229 For more information on text relocations at runtime, see 145``buildpaths``
230 https://www.akkadia.org/drepper/textrelocs.html. 146--------------
231 147
232   148``File <filename> in package <packagename> contains reference to TMPDIR [buildpaths]``
233.. _qa-check-ldflags: 149
150This check ensures that build system paths (including :term:`TMPDIR`) do not
151appear in output files, which not only leaks build system configuration into
152the target, but also hinders binary reproducibility as the output will change
153if the build system configuration changes.
234 154
235- ``File '<file>' in package '<package>' doesn't have GNU_HASH (didn't pass LDFLAGS?) [ldflags]`` 155Typically these paths will enter the output through some mechanism in the
156configuration or compilation of the software being built by the recipe. To
157resolve this issue you will need to determine how the detected path is
158entering the output. Sometimes it may require adjusting scripts or code to
159use a relative path rather than an absolute one, or to pick up the path from
160runtime configuration or environment variables.
236 161
237 This indicates that binaries produced when building the recipe have 162.. _qa-check-configure-gettext:
238 not been linked with the :term:`LDFLAGS` options
239 provided by the build system. Check to be sure that the ``LDFLAGS``
240 variable is being passed to the linker command. A common workaround
241 for this situation is to pass in ``LDFLAGS`` using
242 :term:`TARGET_CC_ARCH` within the recipe as
243 follows:
244 ::
245 163
246 TARGET_CC_ARCH += "${LDFLAGS}" 164``configure-gettext``
165---------------------
247 166
248   167``AM_GNU_GETTEXT used but no inherit gettext [configure-gettext]``
249.. _qa-check-xorg-driver-abi: 168
169If a recipe is building something that uses automake and the automake
170files contain an ``AM_GNU_GETTEXT`` directive then this check will fail
171if there is no ``inherit gettext`` statement in the recipe to ensure
172that gettext is available during the build. Add ``inherit gettext`` to
173remove the warning.
174
175.. _qa-check-configure-unsafe:
176
177``configure-unsafe``
178--------------------
179
180``This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities. Rerun configure task after fixing this. [configure-unsafe]``
181
182The log for the :ref:`ref-tasks-configure` task
183indicates that paths on the host were searched for files, which is
184not appropriate when cross-compiling. Look for "is unsafe for
185cross-compilation" or "CROSS COMPILE Badness" in the specified log
186file.
187
188.. _qa-check-debug-deps:
189
190``debug-deps``
191--------------
192
193``<packagename> rdepends on <debug_packagename> [debug-deps]``
194
195There is a dependency between the specified non-dbg package (i.e. a
196package whose name does not end in ``-dbg``) and a package that is a
197``dbg`` package. The ``dbg`` packages contain debug symbols and are
198brought in using several different methods:
199
200- Using the ``dbg-pkgs``
201 :term:`IMAGE_FEATURES` value.
202
203- Using :term:`IMAGE_INSTALL`.
204
205- As a dependency of another ``dbg`` package that was brought in
206 using one of the above methods.
207
208The dependency might have been automatically added because the
209``dbg`` package erroneously contains files that it should not contain
210(e.g. a non-symlink ``.so`` file) or it might have been added
211manually (e.g. by adding to :term:`RDEPENDS`).
212
213.. _qa-check-debug-files:
250 214
251- ``Package <packagename> contains Xorg driver (<driver>) but no xorg-abi- dependencies [xorg-driver-abi]`` 215``debug-files``
216---------------
252 217
253 The specified package contains an Xorg driver, but does not have a 218``non debug package contains .debug directory: <packagename> path <path> [debug-files]``
254 corresponding ABI package dependency. The xserver-xorg recipe 219
255 provides driver ABI names. All drivers should depend on the ABI 220The specified package contains a ``.debug`` directory, which should
256 versions that they have been built against. Driver recipes that 221not appear in anything but the ``-dbg`` package. This situation might
257 include ``xorg-driver-input.inc`` or ``xorg-driver-video.inc`` will 222occur if you add a path which contains a ``.debug`` directory and do
258 automatically get these versions. Consequently, you should only need 223not explicitly add the ``.debug`` directory to the ``-dbg`` package.
259 to explicitly add dependencies to binary driver recipes. 224If this is the case, add the ``.debug`` directory explicitly to
225``FILES:${PN}-dbg``. See :term:`FILES` for additional
226information on :term:`FILES`.
227
228.. _qa-check-dep-cmp:
229
230``dep-cmp``
231-----------
232
233``<var>:<packagename> is invalid: <comparison> (<value>) only comparisons <, =, >, <=, and >= are allowed [dep-cmp]``
234
235If you are adding a versioned dependency relationship to one of the
236dependency variables (:term:`RDEPENDS`,
237:term:`RRECOMMENDS`,
238:term:`RSUGGESTS`,
239:term:`RPROVIDES`,
240:term:`RREPLACES`, or
241:term:`RCONFLICTS`), you must only use the named
242comparison operators. Change the versioned dependency values you are
243adding to match those listed in the message.
244
245.. _qa-check-dev-deps:
246
247``dev-deps``
248------------
249
250``<packagename> rdepends on <dev_packagename> [dev-deps]``
251
252There is a dependency between the specified non-dev package (a package
253whose name does not end in ``-dev``) and a package that is a ``dev``
254package. The ``dev`` packages contain development headers and are
255usually brought in using several different methods:
256
257- Using the ``dev-pkgs``
258 :term:`IMAGE_FEATURES` value.
259
260- Using :term:`IMAGE_INSTALL`.
261
262- As a dependency of another ``dev`` package that was brought in
263 using one of the above methods.
264
265The dependency might have been automatically added (because the
266``dev`` package erroneously contains files that it should not have
267(e.g. a non-symlink ``.so`` file) or it might have been added
268manually (e.g. by adding to :term:`RDEPENDS`).
269
270.. _qa-check-desktop:
271
272``desktop``
273-----------
274
275``"Desktop file issue: ... [desktop]``
276
277Runs the ``desktop-file-validate`` program against any
278``.desktop`` files to validate their contents against the
279specification for ``.desktop`` files.
280
281.. _qa-check-dev-so:
282
283``dev-so``
284----------
285
286``non -dev/-dbg/nativesdk- package contains symlink .so: <packagename> path '<path>' [dev-so]``
287
288Symlink ``.so`` files are for development only, and should therefore
289go into the ``-dev`` package. This situation might occur if you add
290``*.so*`` rather than ``*.so.*`` to a non-dev package. Change
291:term:`FILES` (and possibly
292:term:`PACKAGES`) such that the specified ``.so``
293file goes into an appropriate ``-dev`` package.
294
295.. _qa-check-empty-dirs:
296
297``empty-dirs``
298--------------
299
300``<packagename> installs files in <path>, but it is expected to be empty [empty-dirs]``
301
302The specified package is installing files into a directory that is
303normally expected to be empty (such as ``/tmp``). These files may
304be more appropriately installed to a different location, or
305perhaps alternatively not installed at all, usually by updating the
306:ref:`ref-tasks-install` task/function.
307
308.. _qa-check-file-rdeps:
309
310``file-rdeps``
311--------------
312
313``<packagename> requires <files>, but no providers in its RDEPENDS [file-rdeps]``
314
315A file-level dependency has been identified from the specified
316package on the specified files, but there is no explicit
317corresponding entry in :term:`RDEPENDS`. If
318particular files are required at runtime then :term:`RDEPENDS` should be
319declared in the recipe to ensure the packages providing them are
320built.
321
322.. _qa-check-files-invalid:
323
324``files-invalid``
325-----------------
326
327``FILES variable for package <packagename> contains '//' which is invalid. Attempting to fix this but you should correct the metadata. [files-invalid]``
328
329The string "//" is invalid in a Unix path. Correct all occurrences
330where this string appears in a :term:`FILES` variable so
331that there is only a single "/".
332
333.. _qa-check-host-user-contaminated:
334
335``host-user-contaminated``
336--------------------------
337
338``<package name>: <path> is owned by gid/uid <gid/uid>, which is the same as the user running bitbake. This may be due to host contamination [host-user-contaminated]``
339
340Checks that no package produced by the
341recipe contains any files outside of ``/home`` with a user or group
342ID that matches the user running BitBake. A match usually indicates
343that the files are being installed with an incorrect UID/GID, since
344target IDs are independent from host IDs. For additional information,
345see the section describing the
346:ref:`ref-tasks-install` task.
260 347
261  
262.. _qa-check-infodir: 348.. _qa-check-infodir:
263 349
264- ``The /usr/share/info/dir file is not meant to be shipped in a particular package. [infodir]`` 350``infodir``
351-----------
265 352
266 The ``/usr/share/info/dir`` should not be packaged. Add the following 353``The /usr/share/info/dir file is not meant to be shipped in a particular package. [infodir]``
267 line to your :ref:`ref-tasks-install` task or to your
268 ``do_install_append`` within the recipe as follows:
269 ::
270 354
271 rm ${D}${infodir}/dir 355The ``/usr/share/info/dir`` should not be packaged. Add the following
272   356line to your :ref:`ref-tasks-install` task or to your
357``do_install:append`` within the recipe as follows::
273 358
274.. _qa-check-symlink-to-sysroot: 359 rm ${D}${infodir}/dir
360
361.. _qa-check-installed-vs-shipped:
362
363``installed-vs-shipped``
364------------------------
365
366``<recipename>: Files/directories were installed but not shipped in any package [installed-vs-shipped]``
367
368Files have been installed within the
369:ref:`ref-tasks-install` task but have not been
370included in any package by way of the :term:`FILES`
371variable. Files that do not appear in any package cannot be present
372in an image later on in the build process. You need to do one of the
373following:
374
375- Add the files to :term:`FILES` for the package you want them to appear
376 in (e.g. ``FILES:${``\ :term:`PN`\ ``}`` for the main
377 package).
378
379- Delete the files at the end of the :ref:`ref-tasks-install` task if the
380 files are not needed in any package.
381
382.. _qa-check-incompatible-license:
383
384``incompatible-license``
385------------------------
386
387``Excluding <package> from packaging as it has incompatible license(s): <license> [incompatible-license]``
388
389Report when packages are excluded from being created due to being marked with
390a license that is in :term:`INCOMPATIBLE_LICENSE`.
391
392.. _qa-check-invalid-chars:
393
394``invalid-chars``
395-----------------
275 396
276- ``Symlink <path> in <packagename> points to TMPDIR [symlink-to-sysroot]`` 397``<variable> has non <envoding> characters [invalid-chars]``
277 398
278 The specified symlink points into :term:`TMPDIR` on the 399Checks that the recipe metadata variables :term:`DESCRIPTION`,
279 host. Such symlinks will work on the host. However, they are clearly 400:term:`SUMMARY`, :term:`LICENSE`, and :term:`SECTION` do not contain
280 invalid when running on the target. You should either correct the 401non-UTF-8 characters. Some package managers do not support such characters.
281 symlink to use a relative path or remove the symlink. 402
403.. _qa-check-invalid-packageconfig:
404
405``invalid-packageconfig``
406-------------------------
407
408``<package>: invalid PACKAGECONFIG(s): <configs> [invalid-packageconfig]``
409
410Checks that no undefined features are being added to :term:`PACKAGECONFIG`.
411For example, any name "foo" for which the following form does not exist::
412
413 PACKAGECONFIG[foo] = "..."
282 414
283  
284.. _qa-check-la: 415.. _qa-check-la:
285 416
286- ``<file> failed sanity test (workdir) in path <path> [la]`` 417``la``
418------
287 419
288 The specified ``.la`` file contains :term:`TMPDIR` 420``<file> failed sanity test (workdir) in path <path> [la]``
289 paths. Any ``.la`` file containing these paths is incorrect since
290 ``libtool`` adds the correct sysroot prefix when using the files
291 automatically itself.
292 421
293   422The specified ``.la`` file contains :term:`TMPDIR`
294.. _qa-check-pkgconfig: 423paths. Any ``.la`` file containing these paths is incorrect since
424``libtool`` adds the correct sysroot prefix when using the files
425automatically itself.
295 426
296- ``<file> failed sanity test (tmpdir) in path <path> [pkgconfig]`` 427.. _qa-check-ldflags:
297 428
298 The specified ``.pc`` file contains 429``ldflags``
299 :term:`TMPDIR`\ ``/``\ :term:`WORKDIR` 430-----------
300 paths. Any ``.pc`` file containing these paths is incorrect since
301 ``pkg-config`` itself adds the correct sysroot prefix when the files
302 are accessed.
303 431
304   432``File '<file>' in package '<package>' doesn't have GNU_HASH (didn't pass LDFLAGS?) [ldflags]``
305.. _qa-check-debug-deps:
306 433
307- ``<packagename> rdepends on <debug_packagename> [debug-deps]`` 434This indicates that binaries produced when building the recipe have
435not been linked with the :term:`LDFLAGS` options
436provided by the build system. Check to be sure that the :term:`LDFLAGS`
437variable is being passed to the linker command. A common workaround
438for this situation is to pass in :term:`LDFLAGS` using
439:term:`TARGET_CC_ARCH` within the recipe as
440follows::
308 441
309 A dependency exists between the specified non-dbg package (i.e. a 442 TARGET_CC_ARCH += "${LDFLAGS}"
310 package whose name does not end in ``-dbg``) and a package that is a
311 ``dbg`` package. The ``dbg`` packages contain debug symbols and are
312 brought in using several different methods:
313 443
314 - Using the ``dbg-pkgs`` 444.. _qa-check-libdir:
315 :term:`IMAGE_FEATURES` value.
316 445
317 - Using :term:`IMAGE_INSTALL`. 446``libdir``
447----------
318 448
319 - As a dependency of another ``dbg`` package that was brought in 449``<packagename>: found library in wrong location [libdir]``
320 using one of the above methods.
321 450
322 The dependency might have been automatically added because the 451The specified file may have been installed into an incorrect
323 ``dbg`` package erroneously contains files that it should not contain 452(possibly hardcoded) installation path. For example, this test will
324 (e.g. a non-symlink ``.so`` file) or it might have been added 453catch recipes that install ``/lib/bar.so`` when ``${base_libdir}`` is
325 manually (e.g. by adding to :term:`RDEPENDS`). 454"lib32". Another example is when recipes install
455``/usr/lib64/foo.so`` when ``${libdir}`` is "/usr/lib". False
456positives occasionally exist. For these cases add "libdir" to
457:term:`INSANE_SKIP` for the package.
326 458
327   459.. _qa-check-libexec:
328.. _qa-check-dev-deps:
329 460
330- ``<packagename> rdepends on <dev_packagename> [dev-deps]`` 461``libexec``
462-----------
331 463
332 A dependency exists between the specified non-dev package (a package 464``<packagename>: <path> is using libexec please relocate to <libexecdir> [libexec]``
333 whose name does not end in ``-dev``) and a package that is a ``dev``
334 package. The ``dev`` packages contain development headers and are
335 usually brought in using several different methods:
336 465
337 - Using the ``dev-pkgs`` 466The specified package contains files in ``/usr/libexec`` when the
338 :term:`IMAGE_FEATURES` value. 467distro configuration uses a different path for ``<libexecdir>`` By
468default, ``<libexecdir>`` is ``$prefix/libexec``. However, this
469default can be changed (e.g. ``${libdir}``).
339 470
340 - Using :term:`IMAGE_INSTALL`. 471.. _qa-check-mime:
341 472
342 - As a dependency of another ``dev`` package that was brought in 473``mime``
343 using one of the above methods. 474--------
344 475
345 The dependency might have been automatically added (because the 476``package contains mime types but does not inherit mime: <packagename> path '<file>' [mime]``
346 ``dev`` package erroneously contains files that it should not have
347 (e.g. a non-symlink ``.so`` file) or it might have been added
348 manually (e.g. by adding to :term:`RDEPENDS`).
349 477
350   478The specified package contains mime type files (``.xml`` files in
351.. _qa-check-dep-cmp: 479``${datadir}/mime/packages``) and yet does not inherit the
480:ref:`ref-classes-mime` class which will ensure that these get
481properly installed. Either add ``inherit mime`` to the recipe or remove the
482files at the :ref:`ref-tasks-install` step if they are not needed.
352 483
353- ``<var>_<packagename> is invalid: <comparison> (<value>) only comparisons <, =, >, <=, and >= are allowed [dep-cmp]`` 484.. _qa-check-mime-xdg:
354 485
355 If you are adding a versioned dependency relationship to one of the 486``mime-xdg``
356 dependency variables (:term:`RDEPENDS`, 487------------
357 :term:`RRECOMMENDS`,
358 :term:`RSUGGESTS`,
359 :term:`RPROVIDES`,
360 :term:`RREPLACES`, or
361 :term:`RCONFLICTS`), you must only use the named
362 comparison operators. Change the versioned dependency values you are
363 adding to match those listed in the message.
364 488
365   489``package contains desktop file with key 'MimeType' but does not inherit mime-xdg: <packagename> path '<file>' [mime-xdg]``
366.. _qa-check-compile-host-path:
367 490
368- ``<recipename>: The compile log indicates that host include and/or library paths were used. Please check the log '<logfile>' for more information. [compile-host-path]`` 491The specified package contains a .desktop file with a 'MimeType' key
492present, but does not inherit the :ref:`ref-classes-mime-xdg`
493class that is required in order for that to be activated. Either add
494``inherit mime`` to the recipe or remove the files at the
495:ref:`ref-tasks-install` step if they are not needed.
369 496
370 The log for the :ref:`ref-tasks-compile` task 497.. _qa-check-missing-update-alternatives:
371 indicates that paths on the host were searched for files, which is
372 not appropriate when cross-compiling. Look for "is unsafe for
373 cross-compilation" or "CROSS COMPILE Badness" in the specified log
374 file.
375 498
376   499``missing-update-alternatives``
377.. _qa-check-install-host-path: 500-------------------------------
378 501
379- ``<recipename>: The install log indicates that host include and/or library paths were used. Please check the log '<logfile>' for more information. [install-host-path]`` 502``<recipename>: recipe defines ALTERNATIVE:<packagename> but doesn't inherit update-alternatives. This might fail during do_rootfs later! [missing-update-alternatives]``
380 503
381 The log for the :ref:`ref-tasks-install` task 504This check ensures that if a recipe sets the :term:`ALTERNATIVE` variable that the
382 indicates that paths on the host were searched for files, which is 505recipe also inherits :ref:`ref-classes-update-alternatives` such
383 not appropriate when cross-compiling. Look for "is unsafe for 506that the alternative will be correctly set up. If you are seeing this message, either
384 cross-compilation" or "CROSS COMPILE Badness" in the specified log 507add ``inherit update-alternatives`` to your recipe or remove the reference to the variable
385 file. 508if it is not needed.
386 509
387   510.. _qa-check-packages-list:
388.. _qa-check-configure-unsafe:
389 511
390- ``This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities. Rerun configure task after fixing this. [configure-unsafe]`` 512``packages-list``
513-----------------
391 514
392 The log for the :ref:`ref-tasks-configure` task 515``<packagename> is listed in PACKAGES multiple times, this leads to packaging errors. [packages-list]``
393 indicates that paths on the host were searched for files, which is
394 not appropriate when cross-compiling. Look for "is unsafe for
395 cross-compilation" or "CROSS COMPILE Badness" in the specified log
396 file.
397 516
398   517Package names must appear only once in the
399.. _qa-check-pkgname: 518:term:`PACKAGES` variable. You might receive this
519error if you are attempting to add a package to :term:`PACKAGES` that is
520already in the variable's value.
521
522.. _qa-check-patch-fuzz:
400 523
401- ``<packagename> doesn't match the [a-z0-9.+-]+ regex [pkgname]`` 524``patch-fuzz``
525--------------
402 526
403 The convention within the OpenEmbedded build system (sometimes 527``Fuzz detected: <patch output> [patch-fuzz]``
404 enforced by the package manager itself) is to require that package
405 names are all lower case and to allow a restricted set of characters.
406 If your recipe name does not match this, or you add packages to
407 :term:`PACKAGES` that do not conform to the
408 convention, then you will receive this error. Rename your recipe. Or,
409 if you have added a non-conforming package name to ``PACKAGES``,
410 change the package name appropriately.
411 528
412   529This check looks for evidence of "fuzz" when applying patches within the :ref:`ref-tasks-patch`
413.. _qa-check-unknown-configure-option: 530task. Patch fuzz is a situation when the ``patch`` tool ignores some of the context
531lines in order to apply the patch. Consider this example:
414 532
415- ``<recipe>: configure was passed unrecognized options: <options> [unknown-configure-option]`` 533Patch to be applied::
416 534
417 The configure script is reporting that the specified options are 535 --- filename
418 unrecognized. This situation could be because the options were 536 +++ filename
419 previously valid but have been removed from the configure script. Or, 537 context line 1
420 there was a mistake when the options were added and there is another 538 context line 2
421 option that should be used instead. If you are unsure, consult the 539 context line 3
422 upstream build documentation, the ``./configure --help`` output, and 540 +newly added line
423 the upstream change log or release notes. Once you have worked out 541 context line 4
424 what the appropriate change is, you can update 542 context line 5
425 :term:`EXTRA_OECONF`, 543 context line 6
426 :term:`PACKAGECONFIG_CONFARGS`, or the 544
427 individual :term:`PACKAGECONFIG` option values 545Original source code::
428 accordingly. 546
429 547 different context line 1
430   548 different context line 2
431.. _qa-check-pn-overrides: 549 context line 3
550 context line 4
551 different context line 5
552 different context line 6
553
554Outcome (after applying patch with fuzz)::
555
556 different context line 1
557 different context line 2
558 context line 3
559 newly added line
560 context line 4
561 different context line 5
562 different context line 6
563
564Chances are, the newly added line was actually added in a completely
565wrong location, or it was already in the original source and was added
566for the second time. This is especially possible if the context line 3
567and 4 are blank or have only generic things in them, such as ``#endif`` or ``}``.
568Depending on the patched code, it is entirely possible for an incorrectly
569patched file to still compile without errors.
570
571*How to eliminate patch fuzz warnings*
572
573Use the ``devtool`` command as explained by the warning. First, unpack the
574source into devtool workspace::
575
576 devtool modify <recipe>
577
578This will apply all of the patches, and create new commits out of them in
579the workspace --- with the patch context updated.
580
581Then, replace the patches in the recipe layer::
582
583 devtool finish --force-patch-refresh <recipe> <layer_path>
584
585The patch updates then need be reviewed (preferably with a side-by-side diff
586tool) to ensure they are indeed doing the right thing i.e.:
587
588#. they are applied in the correct location within the file;
589#. they do not introduce duplicate lines, or otherwise do things that
590 are no longer necessary.
591
592To confirm these things, you can also review the patched source code in
593devtool's workspace, typically in ``<build_dir>/workspace/sources/<recipe>/``
594
595Once the review is done, you can create and publish a layer commit with
596the patch updates that modify the context. Devtool may also refresh
597other things in the patches, those can be discarded.
598
599.. _qa-check-patch-status:
600
601``patch-status``
602----------------
603
604- ``Missing Upstream-Status in patch <patchfile> Please add according to <url> [patch-status]``
605
606 The ``Upstream-Status`` value is missing in the specified patch file's header.
607 This value is intended to track whether or not the patch has been sent
608 upstream, whether or not it has been merged, etc.
609
610 For more information, see the
611 ":ref:`contributor-guide/recipe-style-guide:patch upstream status`"
612 section in the Yocto Project and OpenEmbedded Contributor Guide.
613
614- ``Malformed Upstream-Status in patch <patchfile> Please correct according to <url> [patch-status]``
615
616 The ``Upstream-Status`` value in the specified patch file's header is invalid -
617 it must be a specific format. See the "Missing Upstream-Status" entry above
618 for more information.
619
620.. _qa-check-pep517-backend:
621
622``pep517-backend``
623------------------
624
625``inherits setuptools3 but has pyproject.toml with <build backend>, use the correct class [pep517-backend]``
626
627Checks that a recipe inheriting :ref:`ref-classes-setuptools3` has a
628PEP517-compliant backend.
629
630.. _qa-check-perllocalpod:
631
632``perllocalpod``
633----------------
634
635``<packagename> contains perllocal.pod (<files>), should not be installed [perllocalpod]``
636
637``perllocal.pod`` is an index file of locally installed modules and so shouldn't be
638installed by any distribution packages. The :ref:`ref-classes-cpan` class
639already sets ``NO_PERLLOCAL`` to stop this file being generated by most Perl recipes,
640but if a recipe is using ``MakeMaker`` directly then they might not be doing this
641correctly. This check ensures that perllocal.pod is not in any package in order to
642avoid multiple packages shipping this file and thus their packages conflicting
643if installed together.
432 644
433- ``Recipe <recipefile> has PN of "<recipename>" which is in OVERRIDES, this can result in unexpected behavior. [pn-overrides]`` 645.. _qa-check-perm-config:
434 646
435 The specified recipe has a name (:term:`PN`) value that 647``perm-config``
436 appears in :term:`OVERRIDES`. If a recipe is named 648---------------
437 such that its ``PN`` value matches something already in ``OVERRIDES`` 649
438 (e.g. ``PN`` happens to be the same as :term:`MACHINE` 650``Fixup Perms: invalid config line <line> [perm-config]``
439 or :term:`DISTRO`), it can have unexpected 651
440 consequences. For example, assignments such as 652Reports lines in ``fs-perms.txt`` that have an invalid format.
441 ``FILES_${PN} = "xyz"`` effectively turn into ``FILES = "xyz"``. 653
442 Rename your recipe (or if ``PN`` is being set explicitly, change the 654.. _qa-check-perm-line:
443 ``PN`` value) so that the conflict does not occur. See 655
444 :term:`FILES` for additional information. 656``perm-line``
657-------------
658
659``Fixup perms: <config> invalid line: <line> [perm-line]``
660
661Reports lines in ``fs-perms.txt`` that have an invalid format.
662
663.. _qa-check-perm-link:
664
665``perm-link``
666-------------
667
668``Fixup Perms: Unable to correct directory link, target already exists: <directory> -> <target> [perm-link]``
669
670Reports lines in ``fs-perms.txt`` that specify 'link' where the specified
671target already exists.
672
673.. _qa-check-perms:
674
675``perms``
676---------
677
678Currently, this check is unused but reserved.
679
680.. _qa-check-pkgconfig:
681
682``pkgconfig``
683-------------
684
685``<file> failed sanity test (tmpdir) in path <path> [pkgconfig]``
686
687The specified ``.pc`` file contains
688:term:`TMPDIR`\ ``/``\ :term:`WORKDIR`
689paths. Any ``.pc`` file containing these paths is incorrect since
690``pkg-config`` itself adds the correct sysroot prefix when the files
691are accessed.
692
693.. _qa-check-pkgname:
694
695``pkgname``
696-----------
697
698``<packagename> doesn't match the [a-z0-9.+-]+ regex [pkgname]``
699
700The convention within the OpenEmbedded build system (sometimes
701enforced by the package manager itself) is to require that package
702names are all lower case and to allow a restricted set of characters.
703If your recipe name does not match this, or you add packages to
704:term:`PACKAGES` that do not conform to the
705convention, then you will receive this error. Rename your recipe. Or,
706if you have added a non-conforming package name to :term:`PACKAGES`,
707change the package name appropriately.
445 708
446  
447.. _qa-check-pkgvarcheck: 709.. _qa-check-pkgvarcheck:
448 710
711``pkgvarcheck``
712---------------
713
449- ``<recipefile>: Variable <variable> is set as not being package specific, please fix this. [pkgvarcheck]`` 714- ``<recipefile>: Variable <variable> is set as not being package specific, please fix this. [pkgvarcheck]``
450 715
451 Certain variables (:term:`RDEPENDS`, 716 Certain variables (:term:`RDEPENDS`,
@@ -457,291 +722,323 @@ Errors and Warnings
457 ``pkg_preinst``, ``pkg_postinst``, ``pkg_prerm``, ``pkg_postrm``, and 722 ``pkg_preinst``, ``pkg_postinst``, ``pkg_prerm``, ``pkg_postrm``, and
458 :term:`ALLOW_EMPTY`) should always be set specific 723 :term:`ALLOW_EMPTY`) should always be set specific
459 to a package (i.e. they should be set with a package name override 724 to a package (i.e. they should be set with a package name override
460 such as ``RDEPENDS_${PN} = "value"`` rather than 725 such as ``RDEPENDS:${PN} = "value"`` rather than
461 ``RDEPENDS = "value"``). If you receive this error, correct any 726 ``RDEPENDS = "value"``). If you receive this error, correct any
462 assignments to these variables within your recipe. 727 assignments to these variables within your recipe.
463 728
464 729
465- ``recipe uses DEPENDS_${PN}, should use DEPENDS [pkgvarcheck]`` 730- ``recipe uses DEPENDS:${PN}, should use DEPENDS [pkgvarcheck]``
466 731
467 This check looks for instances of setting ``DEPENDS_${PN}`` 732 This check looks for instances of setting ``DEPENDS:${PN}``
468 which is erroneous (:term:`DEPENDS` is a recipe-wide variable and thus 733 which is erroneous (:term:`DEPENDS` is a recipe-wide variable and thus
469 it is not correct to specify it for a particular package, nor will such 734 it is not correct to specify it for a particular package, nor will such
470 an assignment actually work.) Set ``DEPENDS`` instead. 735 an assignment actually work.) Set :term:`DEPENDS` instead.
471 736
737.. _qa-check-pn-overrides:
472 738
473.. _qa-check-already-stripped: 739``pn-overrides``
740----------------
474 741
475- ``File '<file>' from <recipename> was already stripped, this will prevent future debugging! [already-stripped]`` 742``Recipe <recipefile> has PN of "<recipename>" which is in OVERRIDES, this can result in unexpected behavior. [pn-overrides]``
476 743
477 Produced binaries have already been stripped prior to the build 744The specified recipe has a name (:term:`PN`) value that
478 system extracting debug symbols. It is common for upstream software 745appears in :term:`OVERRIDES`. If a recipe is named
479 projects to default to stripping debug symbols for output binaries. 746such that its :term:`PN` value matches something already in :term:`OVERRIDES`
480 In order for debugging to work on the target using ``-dbg`` packages, 747(e.g. :term:`PN` happens to be the same as :term:`MACHINE`
481 this stripping must be disabled. 748or :term:`DISTRO`), it can have unexpected
749consequences. For example, assignments such as
750``FILES:${PN} = "xyz"`` effectively turn into ``FILES = "xyz"``.
751Rename your recipe (or if :term:`PN` is being set explicitly, change the
752:term:`PN` value) so that the conflict does not occur. See
753:term:`FILES` for additional information.
482 754
483 Depending on the build system used by the software being built, 755.. _qa-check-shebang-size:
484 disabling this stripping could be as easy as specifying an additional
485 configure option. If not, disabling stripping might involve patching
486 the build scripts. In the latter case, look for references to "strip"
487 or "STRIP", or the "-s" or "-S" command-line options being specified
488 on the linker command line (possibly through the compiler command
489 line if preceded with "-Wl,").
490 756
491 .. note:: 757``shebang-size``
758----------------
492 759
493 Disabling stripping here does not mean that the final packaged 760``<packagename>: <file> maximum shebang size exceeded, the maximum size is 128. [shebang-size]``
494 binaries will be unstripped. Once the OpenEmbedded build system
495 splits out debug symbols to the ``-dbg`` package, it will then
496 strip the symbols from the binaries.
497 761
498   762This check ensures that the shebang line (``#!`` in the first line) for a script
499.. _qa-check-packages-list: 763is not longer than 128 characters, which can cause an error at runtime depending
764on the operating system. If you are seeing this message then the specified script
765may need to be patched to have a shorter in order to avoid runtime problems.
500 766
501- ``<packagename> is listed in PACKAGES multiple times, this leads to packaging errors. [packages-list]`` 767.. _qa-check-shlib-provider:
502 768
503 Package names must appear only once in the 769Shlib provider
504 :term:`PACKAGES` variable. You might receive this 770--------------
505 error if you are attempting to add a package to ``PACKAGES`` that is
506 already in the variable's value.
507 771
508   772``<oldpackage>-<oldpkgversion> was registered as shlib provider for <library>, changing it to <newpackage>-<newpkgversion> because it was built later``
509.. _qa-check-files-invalid:
510 773
511- ``FILES variable for package <packagename> contains '//' which is invalid. Attempting to fix this but you should correct the metadata. [files-invalid]`` 774This message means that both ``<oldpackage>`` and ``<newpackage>``
775provide the specified shared library. You can expect this message
776when a recipe has been renamed. However, if that is not the case, the
777message might indicate that a private version of a library is being
778erroneously picked up as the provider for a common library. If that
779is the case, you should add the library's ``.so`` filename to
780:term:`PRIVATE_LIBS` in the recipe that provides
781the private version of the library.
512 782
513 The string "//" is invalid in a Unix path. Correct all occurrences 783.. _qa-check-space-around-equal:
514 where this string appears in a :term:`FILES` variable so
515 that there is only a single "/".
516 784
517   785``space-around-equal``
518.. _qa-check-installed-vs-shipped: 786----------------------
519 787
520- ``<recipename>: Files/directories were installed but not shipped in any package [installed-vs-shipped]`` 788``<filename>:<line number> has a lack of whitespace around the assignment: '<assignment>'``
521 789
522 Files have been installed within the 790This warning indicated that there is missing spaces around an assignment.
523 :ref:`ref-tasks-install` task but have not been
524 included in any package by way of the :term:`FILES`
525 variable. Files that do not appear in any package cannot be present
526 in an image later on in the build process. You need to do one of the
527 following:
528 791
529 - Add the files to ``FILES`` for the package you want them to appear 792For example, the following assignments would print a warning::
530 in (e.g. ``FILES_${``\ :term:`PN`\ ``}`` for the main
531 package).
532 793
533 - Delete the files at the end of the ``do_install`` task if the 794 FOO="bar"
534 files are not needed in any package. 795 FOO= "bar"
796 FOO ="bar"
535 797
536   798These should be replaced by::
537 799
538- ``<oldpackage>-<oldpkgversion> was registered as shlib provider for <library>, changing it to <newpackage>-<newpkgversion> because it was built later`` 800 FOO = "bar"
539 801
540 This message means that both ``<oldpackage>`` and ``<newpackage>`` 802.. _qa-check-src-uri-bad:
541 provide the specified shared library. You can expect this message
542 when a recipe has been renamed. However, if that is not the case, the
543 message might indicate that a private version of a library is being
544 erroneously picked up as the provider for a common library. If that
545 is the case, you should add the library's ``.so`` file name to
546 :term:`PRIVATE_LIBS` in the recipe that provides
547 the private version of the library.
548 803
804``src-uri-bad``
805---------------
549 806
550.. _qa-check-unlisted-pkg-lics: 807- ``<recipename>: SRC_URI uses unstable GitHub archives [src-uri-bad]``
551 808
552- ``LICENSE_<packagename> includes licenses (<licenses>) that are not listed in LICENSE [unlisted-pkg-lics]`` 809 GitHub provides "archive" tarballs, however these can be re-generated
810 on the fly and thus the file's signature will not necessarily match that
811 in the :term:`SRC_URI` checksums in future leading to build failures. It is
812 recommended that you use an official release tarball or switch to
813 pulling the corresponding revision in the actual git repository instead.
553 814
554 The :term:`LICENSE` of the recipe should be a superset
555 of all the licenses of all packages produced by this recipe. In other
556 words, any license in ``LICENSE_*`` should also appear in
557 :term:`LICENSE`.
558 815
816- ``SRC_URI uses PN not BPN [src-uri-bad]``
559 817
560.. _qa-check-configure-gettext: 818 If some part of :term:`SRC_URI` needs to reference the recipe name, it should do
819 so using ${:term:`BPN`} rather than ${:term:`PN`} as the latter will change
820 for different variants of the same recipe e.g. when :term:`BBCLASSEXTEND`
821 or multilib are being used. This check will fail if a reference to ``${PN}``
822 is found within the :term:`SRC_URI` value --- change it to ``${BPN}`` instead.
561 823
562- ``AM_GNU_GETTEXT used but no inherit gettext [configure-gettext]`` 824.. _qa-check-staticdev:
563 825
564 If a recipe is building something that uses automake and the automake 826``staticdev``
565 files contain an ``AM_GNU_GETTEXT`` directive then this check will fail 827-------------
566 if there is no ``inherit gettext`` statement in the recipe to ensure
567 that gettext is available during the build. Add ``inherit gettext`` to
568 remove the warning.
569 828
829``non -staticdev package contains static .a library: <packagename> path '<path>' [staticdev]``
570 830
571.. _qa-check-mime: 831Static ``.a`` library files should go into a ``-staticdev`` package.
832Change :term:`FILES` (and possibly
833:term:`PACKAGES`) such that the specified ``.a`` file
834goes into an appropriate ``-staticdev`` package.
572 835
573- ``package contains mime types but does not inherit mime: <packagename> path '<file>' [mime]`` 836.. _qa-check-symlink-to-sysroot:
574 837
575 The specified package contains mime type files (``.xml`` files in 838``symlink-to-sysroot``
576 ``${datadir}/mime/packages``) and yet does not inherit the mime 839----------------------
577 class which will ensure that these get properly installed. Either
578 add ``inherit mime`` to the recipe or remove the files at the
579 ``do_install`` step if they are not needed.
580 840
841``Symlink <path> in <packagename> points to TMPDIR [symlink-to-sysroot]``
581 842
582.. _qa-check-mime-xdg: 843The specified symlink points into :term:`TMPDIR` on the
844host. Such symlinks will work on the host. However, they are clearly
845invalid when running on the target. You should either correct the
846symlink to use a relative path or remove the symlink.
583 847
584- ``package contains desktop file with key 'MimeType' but does not inhert mime-xdg: <packagename> path '<file>' [mime-xdg]`` 848.. _qa-check-recipe-naming:
585 849
586 The specified package contains a .desktop file with a 'MimeType' key 850Recipe naming
587 present, but does not inherit the mime-xdg class that is required in 851-------------
588 order for that to be activated. Either add ``inherit mime`` to the
589 recipe or remove the files at the ``do_install`` step if they are not
590 needed.
591 852
853``Recipe <recipe> appears native/nativesdk but is not, should inherit native/nativesdk``
592 854
593.. _qa-check-src-uri-bad: 855Checks that the recipe name and recipe class match, so that ``*-native``
856recipes inherit :ref:`ref-classes-native` and ``nativesdk-*`` recipes
857inherit :ref:`ref-classes-nativesdk`.
858
859.. _qa-check-rpaths:
860
861``rpaths``
862----------
863
864``package <packagename> contains bad RPATH <rpath> in file <file> [rpaths]``
594 865
595- ``<recipename>: SRC_URI uses unstable GitHub archives [src-uri-bad]`` 866The specified binary produced by the recipe contains dynamic library
867load paths (rpaths) that contain build system paths such as
868:term:`TMPDIR`, which are incorrect for the target and
869could potentially be a security issue. Check for bad ``-rpath``
870options being passed to the linker in your
871:ref:`ref-tasks-compile` log. Depending on the build
872system used by the software being built, there might be a configure
873option to disable rpath usage completely within the build of the
874software.
596 875
597 GitHub provides "archive" tarballs, however these can be re-generated 876.. _qa-check-textrel:
598 on the fly and thus the file's signature will not necessarily match that 877
599 in the SRC_URI checksums in future leading to build failures. It is 878``textrel``
600 recommended that you use an official release tarball or switch to 879-----------
601 pulling the corresponding revision in the actual git repository instead.
602 880
881``ELF binary '<file>' has relocations in .text [textrel]``
603 882
604- ``SRC_URI uses PN not BPN [src-uri-bad]`` 883The specified ELF binary contains relocations in its ``.text``
884sections. This situation can result in a performance impact at
885runtime.
605 886
606 If some part of :term:`SRC_URI` needs to reference the recipe name, it should do 887Typically, the way to solve this performance issue is to add "-fPIC"
607 so using ${:term:`BPN`} rather than ${:term:`PN`} as the latter will change 888or "-fpic" to the compiler command-line options. For example, given
608 for different variants of the same recipe e.g. when :term:`BBCLASSEXTEND` 889software that reads :term:`CFLAGS` when you build it,
609 or multilib are being used. This check will fail if a reference to ``${PN}`` 890you could add the following to your recipe::
610 is found within the ``SRC_URI`` value - change it to ``${BPN}`` instead.
611 891
892 CFLAGS:append = " -fPIC "
893
894For more information on text relocations at runtime, see
895https://www.akkadia.org/drepper/textrelocs.html.
612 896
613.. _qa-check-unhandled-features-check: 897.. _qa-check-unhandled-features-check:
614 898
615- ``<recipename>: recipe doesn't inherit features_check [unhandled-features-check]`` 899``unhandled-features-check``
900----------------------------
616 901
617 This check ensures that if one of the variables that the :ref:`features_check <ref-classes-features_check>` 902``<recipename>: recipe doesn't inherit features_check [unhandled-features-check]``
618 class supports (e.g. :term:`REQUIRED_DISTRO_FEATURES`) is used, then the recipe
619 inherits ``features_check`` in order for the requirement to actually work. If
620 you are seeing this message, either add ``inherit features_check`` to your recipe
621 or remove the reference to the variable if it is not needed.
622 903
904This check ensures that if one of the variables that the
905:ref:`ref-classes-features_check` class supports (e.g.
906:term:`REQUIRED_DISTRO_FEATURES`) is used, then the recipe
907inherits :ref:`ref-classes-features_check` in order for
908the requirement to actually work. If you are seeing this message, either
909add ``inherit features_check`` to your recipe or remove the reference to
910the variable if it is not needed.
623 911
624.. _qa-check-missing-update-alternatives: 912.. _qa-check-unimplemented-ptest:
625 913
626- ``<recipename>: recipe defines ALTERNATIVE_<packagename> but doesn't inherit update-alternatives. This might fail during do_rootfs later! [missing-update-alternatives]`` 914``unimplemented-ptest``
915-----------------------
627 916
628 This check ensures that if a recipe sets the :term:`ALTERNATIVE` variable that the 917``<tool> tests detected [unimplemented-ptest]``
629 recipe also inherits :ref:`update-alternatives <ref-classes-update-alternatives>` such
630 that the alternative will be correctly set up. If you are seeing this message, either
631 add ``inherit update-alternatives`` to your recipe or remove the reference to the variable
632 if it is not needed.
633 918
919This check will detect if the source of the package contains some
920upstream-provided tests and, if so, that ptests are implemented for this
921recipe. See the ":ref:`test-manual/ptest:testing packages with ptest`"
922section in the Yocto Project Development Tasks Manual. See also the
923":ref:`ref-classes-ptest`" section.
634 924
635.. _qa-check-shebang-size: 925.. _qa-check-unknown-configure-option:
636 926
637- ``<packagename>: <file> maximum shebang size exceeded, the maximum size is 128. [shebang-size]`` 927``unknown-configure-option``
928----------------------------
638 929
639 This check ensures that the shebang line (``#!`` in the first line) for a script 930``<recipe>: configure was passed unrecognized options: <options> [unknown-configure-option]``
640 is not longer than 128 characters, which can cause an error at runtime depending
641 on the operating system. If you are seeing this message then the specified script
642 may need to be patched to have a shorter in order to avoid runtime problems.
643 931
932The configure script is reporting that the specified options are
933unrecognized. This situation could be because the options were
934previously valid but have been removed from the configure script. Or,
935there was a mistake when the options were added and there is another
936option that should be used instead. If you are unsure, consult the
937upstream build documentation, the ``./configure --help`` output, and
938the upstream change log or release notes. Once you have worked out
939what the appropriate change is, you can update
940:term:`EXTRA_OECONF`,
941:term:`PACKAGECONFIG_CONFARGS`, or the
942individual :term:`PACKAGECONFIG` option values
943accordingly.
644 944
645.. _qa-check-perllocalpod: 945.. _qa-check-unlisted-pkg-lics:
646 946
647- ``<packagename> contains perllocal.pod (<files>), should not be installed [perllocalpod]`` 947``unlisted-pkg-lics``
948---------------------
648 949
649 ``perllocal.pod`` is an index file of locally installed modules and so shouldn't be 950``LICENSE:<packagename> includes licenses (<licenses>) that are not listed in LICENSE [unlisted-pkg-lics]``
650 installed by any distribution packages. The :ref:`cpan <ref-classes-cpan>` class
651 already sets ``NO_PERLLOCAL`` to stop this file being generated by most Perl recipes,
652 but if a recipe is using ``MakeMaker`` directly then they might not be doing this
653 correctly. This check ensures that perllocal.pod is not in any package in order to
654 avoid multiple packages shipping this file and thus their packages conflicting
655 if installed together.
656 951
952The :term:`LICENSE` of the recipe should be a superset
953of all the licenses of all packages produced by this recipe. In other
954words, any license in ``LICENSE:*`` should also appear in
955:term:`LICENSE`.
657 956
658.. _qa-check-usrmerge: 957.. _qa-check-useless-rpaths:
659 958
660- ``<packagename> package is not obeying usrmerge distro feature. /<path> should be relocated to /usr. [usrmerge]`` 959``useless-rpaths``
960------------------
661 961
662 If ``usrmerge`` is in :term:`DISTRO_FEATURES`, this check will ensure that no package 962``<packagename>: <file> contains probably-redundant RPATH <rpath> [useless-rpaths]``
663 installs files to root (``/bin``, ``/sbin``, ``/lib``, ``/lib64``) directories. If you are seeing this
664 message, it indicates that the ``do_install`` step (or perhaps the build process that
665 ``do_install`` is calling into, e.g. ``make install`` is using hardcoded paths instead
666 of the variables set up for this (``bindir``, ``sbindir``, etc.), and should be
667 changed so that it does.
668 963
964The specified binary produced by the recipe contains dynamic library
965load paths (rpaths) that on a standard system are searched by default
966by the linker (e.g. ``/lib`` and ``/usr/lib``). While these paths
967will not cause any breakage, they do waste space and are unnecessary.
968Depending on the build system used by the software being built, there
969might be a configure option to disable rpath usage completely within
970the build of the software.
669 971
670.. _qa-check-patch-fuzz: 972.. _qa-check-usrmerge:
671 973
672- ``Fuzz detected: <patch output> [patch-fuzz]`` 974``usrmerge``
975------------
673 976
674 This check looks for evidence of "fuzz" when applying patches within the ``do_patch`` 977``<packagename> package is not obeying usrmerge distro feature. /<path> should be relocated to /usr. [usrmerge]``
675 task. Patch fuzz is a situation when the ``patch`` tool ignores some of the context
676 lines in order to apply the patch. Consider this example:
677 978
678 Patch to be applied: :: 979If ``usrmerge`` is in :term:`DISTRO_FEATURES`, this check will ensure that no package
980installs files to root (``/bin``, ``/sbin``, ``/lib``, ``/lib64``) directories. If you are seeing this
981message, it indicates that the :ref:`ref-tasks-install` step (or perhaps the build process that
982:ref:`ref-tasks-install` is calling into, e.g. ``make install`` is using hardcoded paths instead
983of the variables set up for this (``bindir``, ``sbindir``, etc.), and should be
984changed so that it does.
679 985
680 --- filename 986.. _qa-check-var-undefined:
681 +++ filename
682 context line 1
683 context line 2
684 context line 3
685 +newly added line
686 context line 4
687 context line 5
688 context line 6
689 987
690 Original source code: :: 988``var-undefined``
989-----------------
691 990
692 different context line 1 991- ``WORKDIR, DEPLOY_DIR, D, PN and PKGD all must be defined, unable to package [var-undefined]``
693 different context line 2
694 context line 3
695 context line 4
696 different context line 5
697 different context line 6
698 992
699 Outcome (after applying patch with fuzz): :: 993 Reports when variables fundamental to packaging (i.e. :term:`WORKDIR`,
994 :term:`DEPLOY_DIR`, :term:`D`, :term:`PN`, and :term:`PKGD`) are undefined
995 during :ref:`ref-tasks-package`.
700 996
701 different context line 1 997.. _qa-check-version-going-backwards:
702 different context line 2
703 context line 3
704 newly added line
705 context line 4
706 different context line 5
707 different context line 6
708 998
709 Chances are, the newly added line was actually added in a completely 999``version-going-backwards``
710 wrong location, or it was already in the original source and was added 1000---------------------------
711 for the second time. This is especially possible if the context line 3
712 and 4 are blank or have only generic things in them, such as ``#endif`` or ``}``.
713 Depending on the patched code, it is entirely possible for an incorrectly
714 patched file to still compile without errors.
715 1001
716 *How to eliminate patch fuzz warnings* 1002``Package version for package <package> went backwards which would break package feeds (from <version2> to <version1>) [version-going-backwards]``
717 1003
718 Use the ``devtool`` command as explained by the warning. First, unpack the 1004If the :ref:`ref-classes-buildhistory` class is enabled, reports when a
719 source into devtool workspace: :: 1005package being written out has a lower version than the previously written
1006package under the same name. If you are placing output packages into a feed
1007and upgrading packages on a target system using that feed, the version of a
1008package going backwards can result in the target system not correctly
1009upgrading to the "new" version of the package.
720 1010
721 devtool modify <recipe> 1011.. note::
722 1012
723 This will apply all of the patches, and create new commits out of them in 1013 This is only relevant when you are using runtime package management
724 the workspace - with the patch context updated. 1014 on your target system.
725 1015
726 Then, replace the patches in the recipe layer: :: 1016.. _qa-check-virtual-slash:
727 1017
728 devtool finish --force-patch-refresh <recipe> <layer_path> 1018``virtual-slash``
1019-----------------
729 1020
730 The patch updates then need be reviewed (preferably with a side-by-side diff 1021``<variable> is set to <value> but the substring 'virtual/' holds no meaning in this context. It only works for build time dependencies, not runtime ones. It is suggested to use 'VIRTUAL-RUNTIME_' variables instead. [virtual-slash]``
731 tool) to ensure they are indeed doing the right thing i.e.:
732 1022
733 #. they are applied in the correct location within the file; 1023``virtual/`` is a convention intended for use in the build context
734 #. they do not introduce duplicate lines, or otherwise do things that 1024(i.e. :term:`PROVIDES` and :term:`DEPENDS`) rather than the runtime
735 are no longer necessary. 1025context (i.e. :term:`RPROVIDES` and :term:`RDEPENDS`). Use
1026:term:`VIRTUAL-RUNTIME` variables instead for the latter.
736 1027
737 To confirm these things, you can also review the patched source code in 1028.. _qa-check-xorg-driver-abi:
738 devtool's workspace, typically in ``<build_dir>/workspace/sources/<recipe>/``
739 1029
740 Once the review is done, you can create and publish a layer commit with 1030``xorg-driver-abi``
741 the patch updates that modify the context. Devtool may also refresh 1031-------------------
742 other things in the patches, those can be discarded.
743 1032
1033``Package <packagename> contains Xorg driver (<driver>) but no xorg-abi- dependencies [xorg-driver-abi]``
744 1034
1035The specified package contains an Xorg driver, but does not have a
1036corresponding ABI package dependency. The xserver-xorg recipe
1037provides driver ABI names. All drivers should depend on the ABI
1038versions that they have been built against. Driver recipes that
1039include ``xorg-driver-input.inc`` or ``xorg-driver-video.inc`` will
1040automatically get these versions. Consequently, you should only need
1041to explicitly add dependencies to binary driver recipes.
745 1042
746Configuring and Disabling QA Checks 1043Configuring and Disabling QA Checks
747=================================== 1044===================================
@@ -752,10 +1049,10 @@ either raise a warning or an error message, using the
752variables, respectively. You can also disable checks within a particular 1049variables, respectively. You can also disable checks within a particular
753recipe using :term:`INSANE_SKIP`. For information on 1050recipe using :term:`INSANE_SKIP`. For information on
754how to work with the QA checks, see the 1051how to work with the QA checks, see the
755":ref:`insane.bbclass <ref-classes-insane>`" section. 1052":ref:`ref-classes-insane`" section.
756 1053
757.. note:: 1054.. note::
758 1055
759 Please keep in mind that the QA checks exist in order to detect real 1056 Please keep in mind that the QA checks are meant to detect real
760 or potential problems in the packaged output. So exercise caution 1057 or potential problems in the packaged output. So exercise caution
761 when disabling these checks. 1058 when disabling these checks.
diff --git a/documentation/ref-manual/release-process.rst b/documentation/ref-manual/release-process.rst
index ed5a09a55d..639921b9f6 100644
--- a/documentation/ref-manual/release-process.rst
+++ b/documentation/ref-manual/release-process.rst
@@ -14,14 +14,13 @@ Major and Minor Release Cadence
14 14
15The Yocto Project delivers major releases (e.g. &DISTRO;) using a six 15The Yocto Project delivers major releases (e.g. &DISTRO;) using a six
16month cadence roughly timed each April and October of the year. 16month cadence roughly timed each April and October of the year.
17Following are examples of some major YP releases with their codenames 17Here are examples of some major YP releases with their codenames
18also shown. See the "`Major Release 18also shown. See the ":ref:`ref-manual/release-process:major release codenames`"
19Codenames <#major-release-codenames>`__" section for information on 19section for information on codenames used with major releases.
20codenames used with major releases.
21 20
22 - 2.2 (Morty) 21 - 4.1 ("Langdale")
23 - 2.1 (Krogoth) 22 - 4.0 ("Kirkstone")
24 - 2.0 (Jethro) 23 - 3.4 ("Honister")
25 24
26While the cadence is never perfect, this timescale facilitates 25While the cadence is never perfect, this timescale facilitates
27regular releases that have strong QA cycles while not overwhelming users 26regular releases that have strong QA cycles while not overwhelming users
@@ -30,12 +29,12 @@ major holidays in various geographies.
30 29
31The Yocto project delivers minor (point) releases on an unscheduled 30The Yocto project delivers minor (point) releases on an unscheduled
32basis and are usually driven by the accumulation of enough significant 31basis and are usually driven by the accumulation of enough significant
33fixes or enhancements to the associated major release. Following are 32fixes or enhancements to the associated major release.
34some example past point releases: 33Some example past point releases are:
35 34
36 - 2.1.1 35 - 4.1.3
37 - 2.1.2 36 - 4.0.8
38 - 2.2.1 37 - 3.4.4
39 38
40The point release 39The point release
41indicates a point in the major release branch where a full QA cycle and 40indicates a point in the major release branch where a full QA cycle and
@@ -63,8 +62,10 @@ codename are likely to be compatible and thus work together.
63 62
64Releases are given a nominal release version as well but the codename is 63Releases are given a nominal release version as well but the codename is
65used in repositories for this reason. You can find information on Yocto 64used in repositories for this reason. You can find information on Yocto
66Project releases and codenames at 65Project releases and codenames at :yocto_wiki:`/Releases`.
67:yocto_wiki:`/Releases`. 66
67Our :doc:`/migration-guides/index` detail how to migrate from one release of
68the Yocto Project to the next.
68 69
69Stable Release Process 70Stable Release Process
70====================== 71======================
@@ -83,18 +84,59 @@ stable release.
83 bug fixes and security fixes only. Policy dictates that features are 84 bug fixes and security fixes only. Policy dictates that features are
84 not backported to a stable release. This policy means generic recipe 85 not backported to a stable release. This policy means generic recipe
85 version upgrades are unlikely to be accepted for backporting. The 86 version upgrades are unlikely to be accepted for backporting. The
86 exception to this policy occurs when a strong reason exists such as 87 exception to this policy occurs when there is a strong reason such as
87 the fix happens to also be the preferred upstream approach. 88 the fix happens to also be the preferred upstream approach.
88 89
89Stable release branches have strong maintenance for about a year after 90.. _ref-long-term-support-releases:
90their initial release. Should significant issues be found for any 91
91release regardless of its age, fixes could be backported to older 92Long Term Support Releases
92releases. For issues that are not backported given an older release, 93==========================
93Community LTS trees and branches exist where community members share 94
94patches for older releases. However, these types of patches do not go 95While stable releases are supported for a duration of seven months,
95through the same release process as do point releases. You can find more 96some specific ones are now supported for a longer period by the Yocto
96information about stable branch maintenance at 97Project, and are called Long Term Support (:term:`LTS`) releases.
97:yocto_wiki:`/Stable_branch_maintenance`. 98
99When significant issues are found, :term:`LTS` releases allow to publish
100fixes not only for the current stable release, but also to the
101:term:`LTS` releases that are still supported. Older stable releases which
102have reached their End of Life (EOL) won't receive such updates.
103
104This started with version 3.1 ("Dunfell"), released in April 2020, which
105the project initially committed to supporting for two years, but this duration
106was later extended to four years.
107
108A new :term:`LTS` release is made every two years and is supported for four
109years. This offers more stability to project users and leaves more time to
110upgrade to the following :term:`LTS` release.
111
112The currently supported :term:`LTS` releases are:
113
114- Version 5.0 ("Scarthgap"), released in April 2024 and supported until April 2028.
115- Version 4.0 ("Kirkstone"), released in May 2022 and supported until May 2026.
116
117See :yocto_wiki:`/Stable_Release_and_LTS` for details about the management
118of stable and :term:`LTS` releases.
119
120This documentation was built for the &DISTRO_NAME; release.
121
122.. image:: svg/releases.*
123 :width: 100%
124
125.. note::
126
127 In some circumstances, a layer can be created by the community in order to
128 add a specific feature or support a new version of some package for an :term:`LTS`
129 release. This is called a :term:`Mixin` layer. These are thin and specific
130 purpose layers which can be stacked with an :term:`LTS` release to "mix" a specific
131 feature into that build. These are created on an as-needed basis and
132 maintained by the people who need them.
133
134 Policies on testing these layers depend on how widespread their usage is and
135 determined on a case-by-case basis. You can find some :term:`Mixin` layers in the
136 :yocto_git:`meta-lts-mixins </meta-lts-mixins>` repository. While the Yocto
137 Project provides hosting for those repositories, it does not provides
138 testing on them. Other :term:`Mixin` layers may be released elsewhere by the wider
139 community.
98 140
99Testing and Quality Assurance 141Testing and Quality Assurance
100============================= 142=============================
@@ -106,8 +148,8 @@ Additionally, because the test strategies are visible to you as a
106developer, you can validate your projects. This section overviews the 148developer, you can validate your projects. This section overviews the
107available test infrastructure used in the Yocto Project. For information 149available test infrastructure used in the Yocto Project. For information
108on how to run available tests on your projects, see the 150on how to run available tests on your projects, see the
109":ref:`dev-manual/common-tasks:performing automated runtime testing`" 151":ref:`test-manual/runtime-testing:performing automated runtime testing`"
110section in the Yocto Project Development Tasks Manual. 152section in the Yocto Project Test Environment Manual.
111 153
112The QA/testing infrastructure is woven into the project to the point 154The QA/testing infrastructure is woven into the project to the point
113where core developers take some of it for granted. The infrastructure 155where core developers take some of it for granted. The infrastructure
@@ -116,58 +158,49 @@ consists of the following pieces:
116- ``bitbake-selftest``: A standalone command that runs unit tests on 158- ``bitbake-selftest``: A standalone command that runs unit tests on
117 key pieces of BitBake and its fetchers. 159 key pieces of BitBake and its fetchers.
118 160
119- :ref:`sanity.bbclass <ref-classes-sanity>`: This automatically 161- :ref:`ref-classes-sanity`: This automatically
120 included class checks the build environment for missing tools (e.g. 162 included class checks the build environment for missing tools (e.g.
121 ``gcc``) or common misconfigurations such as 163 ``gcc``) or common misconfigurations such as
122 :term:`MACHINE` set incorrectly. 164 :term:`MACHINE` set incorrectly.
123 165
124- :ref:`insane.bbclass <ref-classes-insane>`: This class checks the 166- :ref:`ref-classes-insane`: This class checks the
125 generated output from builds for sanity. For example, if building for 167 generated output from builds for sanity. For example, if building for
126 an ARM target, did the build produce ARM binaries. If, for example, 168 an ARM target, did the build produce ARM binaries. If, for example,
127 the build produced PPC binaries then there is a problem. 169 the build produced PPC binaries then there is a problem.
128 170
129- :ref:`testimage.bbclass <ref-classes-testimage*>`: This class 171- :ref:`ref-classes-testimage`: This class
130 performs runtime testing of images after they are built. The tests 172 performs runtime testing of images after they are built. The tests
131 are usually used with :doc:`QEMU </dev-manual/qemu>` 173 are usually used with :doc:`QEMU </dev-manual/qemu>`
132 to boot the images and check the combined runtime result boot 174 to boot the images and check the combined runtime result boot
133 operation and functions. However, the test can also use the IP 175 operation and functions. However, the test can also use the IP
134 address of a machine to test. 176 address of a machine to test.
135 177
136- :ref:`ptest <dev-manual/common-tasks:testing packages with ptest>`: 178- :ref:`ptest <test-manual/ptest:testing packages with ptest>`:
137 Runs tests against packages produced during the build for a given 179 Runs tests against packages produced during the build for a given
138 piece of software. The test allows the packages to be be run within a 180 piece of software. The test allows the packages to be run within a
139 target image. 181 target image.
140 182
141- ``oe-selftest``: Tests combination BitBake invocations. These tests 183- ``oe-selftest``: Tests combinations of BitBake invocations. These tests
142 operate outside the OpenEmbedded build system itself. The 184 operate outside the OpenEmbedded build system itself. The
143 ``oe-selftest`` can run all tests by default or can run selected 185 ``oe-selftest`` can run all tests by default or can run selected
144 tests or test suites. 186 tests or test suites.
145 187
146 .. note::
147
148 Running ``oe-selftest`` requires host packages beyond the "Essential"
149 grouping. See the :ref:`ref-manual/system-requirements:required packages for the build host`
150 section for more information.
151
152Originally, much of this testing was done manually. However, significant 188Originally, much of this testing was done manually. However, significant
153effort has been made to automate the tests so that more people can use 189effort has been made to automate the tests so that more people can use
154them and the Yocto Project development team can run them faster and more 190them and the Yocto Project development team can run them faster and more
155efficiently. 191efficiently.
156 192
157The Yocto Project's main Autobuilder (&YOCTO_AB_URL;) 193The Yocto Project's main :yocto_ab:`Autobuilder <>` publicly tests each Yocto
158publicly tests each Yocto Project release's code in the 194Project release's code in the :oe_git:`openembedded-core </openembedded-core>`,
159:term:`OpenEmbedded-Core (OE-Core)`, Poky, and BitBake repositories. The testing 195:yocto_git:`poky </poky>` and :oe_git:`bitbake </bitbake>` repositories. The
160occurs for both the current state of the "master" branch and also for 196testing occurs for both the current state of the "master" branch and also for
161submitted patches. Testing for submitted patches usually occurs in the 197submitted patches. Testing for submitted patches usually occurs in the
162"ross/mut" branch in the ``poky-contrib`` repository (i.e. the 198in the "master-next" branch in the :yocto_git:`poky </poky>` repository.
163master-under-test branch) or in the "master-next" branch in the ``poky``
164repository.
165 199
166.. note:: 200.. note::
167 201
168 You can find all these branches in the Yocto Project 202 You can find all these branches in the
169 Source Repositories 203 :ref:`overview-manual/development-environment:yocto project source repositories`.
170 .
171 204
172Testing within these public branches ensures in a publicly visible way 205Testing within these public branches ensures in a publicly visible way
173that all of the main supposed architectures and recipes in OE-Core 206that all of the main supposed architectures and recipes in OE-Core
diff --git a/documentation/ref-manual/resources.rst b/documentation/ref-manual/resources.rst
index 7554164d11..bcbc7ebaca 100644
--- a/documentation/ref-manual/resources.rst
+++ b/documentation/ref-manual/resources.rst
@@ -10,7 +10,7 @@ Introduction
10============ 10============
11 11
12The Yocto Project team is happy for people to experiment with the Yocto 12The Yocto Project team is happy for people to experiment with the Yocto
13Project. A number of places exist to find help if you run into 13Project. There is a number of places where you can find help if you run into
14difficulties or find bugs. This presents information about contributing 14difficulties or find bugs. This presents information about contributing
15and participating in the Yocto Project. 15and participating in the Yocto Project.
16 16
@@ -23,8 +23,7 @@ The Yocto Project gladly accepts contributions. You can submit changes
23to the project either by creating and sending pull requests, or by 23to the project either by creating and sending pull requests, or by
24submitting patches through email. For information on how to do both as 24submitting patches through email. For information on how to do both as
25well as information on how to identify the maintainer for each area of 25well as information on how to identify the maintainer for each area of
26code, see the ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`" section in the 26code, see the :doc:`/contributor-guide/index`.
27Yocto Project Development Tasks Manual.
28 27
29.. _resources-bugtracker: 28.. _resources-bugtracker:
30 29
@@ -43,12 +42,11 @@ the Yocto Project itself (e.g. when discovering an issue with some
43component of the build system that acts contrary to the documentation or 42component of the build system that acts contrary to the documentation or
44your expectations). 43your expectations).
45 44
46A general procedure and guidelines exist for when you use Bugzilla to 45For a general procedure and guidelines on how to use Bugzilla to submit a bug
47submit a bug. For information on how to use Bugzilla to submit a bug
48against the Yocto Project, see the following: 46against the Yocto Project, see the following:
49 47
50- The ":ref:`dev-manual/common-tasks:submitting a defect against the yocto project`" 48- The ":doc:`/contributor-guide/report-defect`"
51 section in the Yocto Project Development Tasks Manual. 49 section in the Yocto Project and OpenEmbedded Contributor Guide.
52 50
53- The Yocto Project :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>` 51- The Yocto Project :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>`
54 52
@@ -59,44 +57,49 @@ For information on Bugzilla in general, see https://www.bugzilla.org/about/.
59Mailing lists 57Mailing lists
60============= 58=============
61 59
62A number of mailing lists maintained by the Yocto Project exist as well 60There are multiple mailing lists maintained by the Yocto Project as well
63as related OpenEmbedded mailing lists for discussion, patch submission 61as related OpenEmbedded mailing lists for discussion, patch submission
64and announcements. To subscribe to one of the following mailing lists, 62and announcements. To subscribe to one of the following mailing lists,
65click on the appropriate URL in the following list and follow the 63click on the appropriate URL in the following list and follow the
66instructions: 64instructions:
67 65
68- :yocto_lists:`/g/yocto` - General Yocto Project 66- :yocto_lists:`/g/yocto` --- general Yocto Project
69 discussion mailing list. 67 discussion mailing list.
70 68
71- :oe_lists:`/g/openembedded-core` - Discussion mailing 69- :yocto_lists:`/g/yocto-patches` --- patch contribution mailing list for Yocto
70 Project-related layers which do not have their own mailing list.
71
72- :oe_lists:`/g/openembedded-core` --- discussion mailing
72 list about OpenEmbedded-Core (the core metadata). 73 list about OpenEmbedded-Core (the core metadata).
73 74
74- :oe_lists:`/g/openembedded-devel` - Discussion 75- :oe_lists:`/g/openembedded-devel` --- discussion
75 mailing list about OpenEmbedded. 76 mailing list about OpenEmbedded.
76 77
77- :oe_lists:`/g/bitbake-devel` - Discussion mailing 78- :oe_lists:`/g/bitbake-devel` --- discussion mailing
78 list about the :term:`BitBake` build tool. 79 list about the :term:`BitBake` build tool.
79 80
80- :yocto_lists:`/g/poky` - Discussion mailing list 81- :yocto_lists:`/g/poky` --- discussion mailing list
81 about :term:`Poky`. 82 about :term:`Poky`.
82 83
83- :yocto_lists:`/g/yocto-announce` - Mailing list to 84- :yocto_lists:`/g/yocto-announce` --- mailing list to
84 receive official Yocto Project release and milestone announcements. 85 receive official Yocto Project release and milestone announcements.
85 86
86For more Yocto Project-related mailing lists, see the 87- :yocto_lists:`/g/docs` --- discussion mailing list about the Yocto Project
87:yocto_home:`Yocto Project Website <>`. 88 documentation.
89
90See also :yocto_home:`the description of all mailing lists </community/mailing-lists/>`.
88 91
89.. _resources-irc: 92.. _resources-irc:
90 93
91Internet Relay Chat (IRC) 94Internet Relay Chat (IRC)
92========================= 95=========================
93 96
94Two IRC channels on freenode are available for the Yocto Project and 97Two IRC channels on `Libera Chat <https://libera.chat/>`__
95Poky discussions: 98are available for the Yocto Project and OpenEmbedded discussions:
96 99
97- ``#yocto`` 100- ``#yocto``
98 101
99- ``#poky`` 102- ``#oe``
100 103
101.. _resources-links-and-related-documentation: 104.. _resources-links-and-related-documentation:
102 105
@@ -105,93 +108,96 @@ Links and Related Documentation
105 108
106Here is a list of resources you might find helpful: 109Here is a list of resources you might find helpful:
107 110
108- :yocto_home:`The Yocto Project Website <>`\ *:* The home site 111- :yocto_home:`The Yocto Project Website <>`: The home site
109 for the Yocto Project. 112 for the Yocto Project.
110 113
111- :yocto_wiki:`The Yocto Project Main Wiki Page <>`\ *:* The main wiki page for 114- :yocto_wiki:`The Yocto Project Main Wiki Page <>`: The main wiki page for
112 the Yocto Project. This page contains information about project 115 the Yocto Project. This page contains information about project
113 planning, release engineering, QA & automation, a reference site map, 116 planning, release engineering, QA & automation, a reference site map,
114 and other resources related to the Yocto Project. 117 and other resources related to the Yocto Project.
115 118
116- :oe_home:`OpenEmbedded <>`\ *:* The build system used by the 119- :oe_home:`OpenEmbedded <>`: The build system used by the
117 Yocto Project. This project is the upstream, generic, embedded 120 Yocto Project. This project is the upstream, generic, embedded
118 distribution from which the Yocto Project derives its build system 121 distribution from which the Yocto Project derives its build system
119 (Poky) and to which it contributes. 122 (Poky) and to which it contributes.
120 123
121- :oe_wiki:`BitBake </BitBake>`\ *:* The tool used to process metadata. 124- :oe_wiki:`BitBake </BitBake>`: The tool used to process metadata.
122 125
123- :doc:`BitBake User Manual <bitbake:index>`\ *:* A comprehensive 126- :doc:`BitBake User Manual <bitbake:index>`: A comprehensive
124 guide to the BitBake tool. If you want information on BitBake, see 127 guide to the BitBake tool. If you want information on BitBake, see
125 this manual. 128 this manual.
126 129
127- :doc:`/brief-yoctoprojectqs/index` *:* This 130- :doc:`/brief-yoctoprojectqs/index`: This
128 short document lets you experience building an image using the Yocto 131 short document lets you experience building an image using the Yocto
129 Project without having to understand any concepts or details. 132 Project without having to understand any concepts or details.
130 133
131- :doc:`/overview-manual/index` *:* This manual provides overview 134- :doc:`/overview-manual/index`: This manual provides overview
132 and conceptual information about the Yocto Project. 135 and conceptual information about the Yocto Project.
133 136
134- :doc:`/dev-manual/index` *:* This manual is a "how-to" guide 137- :doc:`/dev-manual/index`: This manual is a "how-to" guide
135 that presents procedures useful to both application and system 138 that presents procedures useful to both application and system
136 developers who use the Yocto Project. 139 developers who use the Yocto Project.
137 140
138- :doc:`/sdk-manual/index` *manual :* This 141- :doc:`/sdk-manual/index` manual: This
139 guide provides information that lets you get going with the standard 142 guide provides information that lets you get going with the standard
140 or extensible SDK. An SDK, with its cross-development toolchains, 143 or extensible SDK. An SDK, with its cross-development toolchains,
141 allows you to develop projects inside or outside of the Yocto Project 144 allows you to develop projects inside or outside of the Yocto Project
142 environment. 145 environment.
143 146
144- :doc:`/bsp-guide/bsp` *:* This guide defines the structure 147- :doc:`/bsp-guide/bsp`: This guide defines the structure
145 for BSP components. Having a commonly understood structure encourages 148 for BSP components. Having a commonly understood structure encourages
146 standardization. 149 standardization.
147 150
148- :doc:`/kernel-dev/index` *:* This manual describes 151- :doc:`/kernel-dev/index`: This manual describes
149 how to work with Linux Yocto kernels as well as provides a bit of 152 how to work with Linux Yocto kernels as well as provides a bit of
150 conceptual information on the construction of the Yocto Linux kernel 153 conceptual information on the construction of the Yocto Linux kernel
151 tree. 154 tree.
152 155
153- :doc:`/ref-manual/index` *:* This 156- :doc:`/ref-manual/index`: This
154 manual provides reference material such as variable, task, and class 157 manual provides reference material such as variable, task, and class
155 descriptions. 158 descriptions.
156 159
157- :yocto_docs:`Yocto Project Mega-Manual </singleindex.html>`\ *:* This manual 160- :yocto_docs:`Yocto Project Mega-Manual </singleindex.html>`: This manual
158 is simply a single HTML file comprised of the bulk of the Yocto 161 is simply a single HTML file comprised of the bulk of the Yocto
159 Project manuals. The Mega-Manual primarily exists as a vehicle by 162 Project manuals. It makes it easy to search for phrases and terms used
160 which you can easily search for phrases and terms used in the Yocto 163 in the Yocto Project documentation set.
161 Project documentation set.
162 164
163- :doc:`/profile-manual/index` *:* This manual presents a set of 165- :doc:`/profile-manual/index`: This manual presents a set of
164 common and generally useful tracing and profiling schemes along with 166 common and generally useful tracing and profiling schemes along with
165 their applications (as appropriate) to each tool. 167 their applications (as appropriate) to each tool.
166 168
167- :doc:`/toaster-manual/index` *:* This manual 169- :doc:`/toaster-manual/index`: This manual
168 introduces and describes how to set up and use Toaster. Toaster is an 170 introduces and describes how to set up and use Toaster. Toaster is an
169 Application Programming Interface (API) and web-based interface to 171 Application Programming Interface (API) and web-based interface to
170 the :term:`OpenEmbedded Build System`, which uses 172 the :term:`OpenEmbedded Build System`, which uses
171 BitBake, that reports build information. 173 BitBake, that reports build information.
172 174
173- :yocto_wiki:`FAQ </FAQ>`\ *:* A list of commonly asked 175- `Yocto Project BitBake extension for VSCode
176 <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__:
177 This extension provides a rich feature set when working with BitBake recipes
178 within the Visual Studio Code IDE.
179
180- :yocto_wiki:`FAQ </FAQ>`: A list of commonly asked
174 questions and their answers. 181 questions and their answers.
175 182
176- *Release Notes:* Features, updates and known issues for the current 183- :doc:`Release Information </migration-guides/index>`:
177 release of the Yocto Project. To access the Release Notes, go to the 184 Migration guides, release notes, new features, updates and known issues
178 :yocto_home:`Downloads </software-overview/downloads>` page on 185 for the current and past releases of the Yocto Project.
179 the Yocto Project website and click on the "RELEASE INFORMATION" link
180 for the appropriate release.
181 186
182- :yocto_bugs:`Bugzilla <>`\ *:* The bug tracking application 187- :yocto_bugs:`Bugzilla <>`: The bug tracking application
183 the Yocto Project uses. If you find problems with the Yocto Project, 188 the Yocto Project uses. If you find problems with the Yocto Project,
184 you should report them using this application. 189 you should report them using this application.
185 190
186- :yocto_wiki:`Bugzilla Configuration and Bug Tracking Wiki Page 191- :yocto_wiki:`Bugzilla Configuration and Bug Tracking Wiki Page
187 </Bugzilla_Configuration_and_Bug_Tracking>`\ *:* 192 </Bugzilla_Configuration_and_Bug_Tracking>`:
188 Information on how to get set up and use the Yocto Project 193 Information on how to get set up and use the Yocto Project
189 implementation of Bugzilla for logging and tracking Yocto Project 194 implementation of Bugzilla for logging and tracking Yocto Project
190 defects. 195 defects.
191 196
192- *Internet Relay Chat (IRC):* Two IRC channels on freenode are 197- Internet Relay Chat (IRC): Two IRC channels on
193 available for Yocto Project and Poky discussions: ``#yocto`` and 198 `Libera Chat <https://libera.chat/>`__ are
194 ``#poky``, respectively. 199 available for Yocto Project and OpenEmbeddded discussions: ``#yocto`` and
200 ``#oe``, respectively.
195 201
196- `Quick EMUlator (QEMU) <https://wiki.qemu.org/Index.html>`__\ *:* An 202- `Quick EMUlator (QEMU) <https://wiki.qemu.org/Index.html>`__: An
197 open-source machine emulator and virtualizer. 203 open-source machine emulator and virtualizer.
diff --git a/documentation/ref-manual/structure.rst b/documentation/ref-manual/structure.rst
index ad3f4ab44a..2640f461d6 100644
--- a/documentation/ref-manual/structure.rst
+++ b/documentation/ref-manual/structure.rst
@@ -38,7 +38,7 @@ usually matches the current stable BitBake release from the BitBake
38project. BitBake, a :term:`Metadata` interpreter, reads the 38project. BitBake, a :term:`Metadata` interpreter, reads the
39Yocto Project Metadata and runs the tasks defined by that data. Failures 39Yocto Project Metadata and runs the tasks defined by that data. Failures
40are usually caused by errors in your Metadata and not from BitBake 40are usually caused by errors in your Metadata and not from BitBake
41itself; consequently, most users do not need to worry about BitBake. 41itself.
42 42
43When you run the ``bitbake`` command, the main BitBake executable (which 43When you run the ``bitbake`` command, the main BitBake executable (which
44resides in the ``bitbake/bin/`` directory) starts. Sourcing the 44resides in the ``bitbake/bin/`` directory) starts. Sourcing the
@@ -57,9 +57,8 @@ For more information on BitBake, see the :doc:`BitBake User Manual
57This directory contains user configuration files and the output 57This directory contains user configuration files and the output
58generated by the OpenEmbedded build system in its standard configuration 58generated by the OpenEmbedded build system in its standard configuration
59where the source tree is combined with the output. The :term:`Build Directory` 59where the source tree is combined with the output. The :term:`Build Directory`
60is created initially when you ``source`` 60is created initially when you ``source`` the OpenEmbedded build environment
61the OpenEmbedded build environment setup script (i.e. 61setup script (i.e. :ref:`structure-core-script`).
62:ref:`structure-core-script`).
63 62
64It is also possible to place output and configuration files in a 63It is also possible to place output and configuration files in a
65directory separate from the :term:`Source Directory` by 64directory separate from the :term:`Source Directory` by
@@ -68,6 +67,9 @@ information on separating output from your local Source Directory files
68(commonly described as an "out of tree" build), see the 67(commonly described as an "out of tree" build), see the
69":ref:`structure-core-script`" section. 68":ref:`structure-core-script`" section.
70 69
70See the ":ref:`The Build Directory --- build/ <structure-build>`" section for details
71about the contents of the :term:`Build Directory`.
72
71.. _handbook: 73.. _handbook:
72 74
73``documentation/`` 75``documentation/``
@@ -150,11 +152,10 @@ BitBake commands. The script uses other scripts within the ``scripts``
150directory to do the bulk of the work. 152directory to do the bulk of the work.
151 153
152When you run this script, your Yocto Project environment is set up, a 154When you run this script, your Yocto Project environment is set up, a
153:term:`Build Directory` is created, your working 155:term:`Build Directory` is created, your working directory becomes the
154directory becomes the Build Directory, and you are presented with some 156:term:`Build Directory`, and you are presented with some simple
155simple suggestions as to what to do next, including a list of some 157suggestions as to what to do next, including a list of some possible
156possible targets to build. Here is an example: 158targets to build. Here is an example::
157::
158 159
159 $ source oe-init-build-env 160 $ source oe-init-build-env
160 161
@@ -168,32 +169,33 @@ possible targets to build. Here is an example:
168 meta-toolchain 169 meta-toolchain
169 meta-ide-support 170 meta-ide-support
170 171
171 You can also run generated qemu images with a command like 'runqemu qemux86-64' 172 You can also run generated QEMU images with a command like 'runqemu qemux86-64'
172 173
173The default output of the ``oe-init-build-env`` script is from the 174The default output of the ``oe-init-build-env`` script is from the
174``conf-notes.txt`` file, which is found in the ``meta-poky`` directory 175``conf-summary.txt`` and ``conf-notes.txt`` files, which are found in the ``meta-poky`` directory
175within the :term:`Source Directory`. If you design a 176within the :term:`Source Directory`. If you design a
176custom distribution, you can include your own version of this 177custom distribution, you can include your own versions of these
177configuration file to mention the targets defined by your distribution. 178configuration files where you can provide a brief summary and detailed usage
179notes, such as a list of the targets defined by your distribution.
178See the 180See the
179":ref:`dev-manual/common-tasks:creating a custom template configuration directory`" 181":ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`"
180section in the Yocto Project Development Tasks Manual for more 182section in the Yocto Project Development Tasks Manual for more
181information. 183information.
182 184
183By default, running this script without a Build Directory argument 185By default, running this script without a :term:`Build Directory` argument
184creates the ``build/`` directory in your current working directory. If 186creates the ``build/`` directory in your current working directory. If
185you provide a Build Directory argument when you ``source`` the script, 187you provide a :term:`Build Directory` argument when you ``source`` the script,
186you direct the OpenEmbedded build system to create a Build Directory of 188you direct the OpenEmbedded build system to create a :term:`Build Directory` of
187your choice. For example, the following command creates a Build 189your choice. For example, the following command creates a
188Directory named ``mybuilds/`` that is outside of the :term:`Source Directory`: 190:term:`Build Directory` named ``mybuilds/`` that is outside of the
189:: 191:term:`Source Directory`::
190 192
191 $ source oe-init-build-env ~/mybuilds 193 $ source oe-init-build-env ~/mybuilds
192 194
193The OpenEmbedded build system uses the template configuration files, which 195The OpenEmbedded build system uses the template configuration files, which
194are found by default in the ``meta-poky/conf/`` directory in the Source 196are found by default in the ``meta-poky/conf/templates/default`` directory in the Source
195Directory. See the 197Directory. See the
196":ref:`dev-manual/common-tasks:creating a custom template configuration directory`" 198":ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`"
197section in the Yocto Project Development Tasks Manual for more 199section in the Yocto Project Development Tasks Manual for more
198information. 200information.
199 201
@@ -215,14 +217,13 @@ These files are standard top-level files.
215 217
216.. _structure-build: 218.. _structure-build:
217 219
218The Build Directory - ``build/`` 220The Build Directory --- ``build/``
219================================ 221==================================
220 222
221The OpenEmbedded build system creates the :term:`Build Directory` 223The OpenEmbedded build system creates the :term:`Build Directory` when you run
222when you run the build environment setup 224the build environment setup script :ref:`structure-core-script`. If you do not
223script :ref:`structure-core-script`. If you do not give the Build 225give the :term:`Build Directory` a specific name when you run the setup script,
224Directory a specific name when you run the setup script, the name 226the name defaults to ``build/``.
225defaults to ``build/``.
226 227
227For subsequent parsing and processing, the name of the Build directory 228For subsequent parsing and processing, the name of the Build directory
228is available via the :term:`TOPDIR` variable. 229is available via the :term:`TOPDIR` variable.
@@ -233,12 +234,36 @@ is available via the :term:`TOPDIR` variable.
233----------------------- 234-----------------------
234 235
235The OpenEmbedded build system creates this directory when you enable 236The OpenEmbedded build system creates this directory when you enable
236build history via the ``buildhistory`` class file. The directory 237build history via the :ref:`ref-classes-buildhistory` class file. The directory
237organizes build information into image, packages, and SDK 238organizes build information into image, packages, and SDK
238subdirectories. For information on the build history feature, see the 239subdirectories. For information on the build history feature, see the
239":ref:`dev-manual/common-tasks:maintaining build output quality`" 240":ref:`dev-manual/build-quality:maintaining build output quality`"
240section in the Yocto Project Development Tasks Manual. 241section in the Yocto Project Development Tasks Manual.
241 242
243.. _structure-build-cache:
244
245``build/cache/``
246----------------
247
248This directory contains several internal files used by the OpenEmbedded
249build system. The path to this directory is defined by the
250:term:`PERSISTENT_DIR` variable.
251
252It also contains ``sanity_info``, a text file keeping track of important
253build information such as the values of :term:`TMPDIR`, :term:`SSTATE_DIR`,
254as well as the name and version of the host distribution.
255
256This directory should not be shared between builds.
257
258.. note::
259
260 The default location of the :ref:`overview-manual/concepts:Hash Equivalence`
261 database is this directory (when :term:`BB_HASHSERVE` is set to ``auto``). If
262 you need to share the :ref:`overview-manual/concepts:Hash Equivalence`
263 database, don't share this file and instead refer to the
264 :doc:`/dev-manual/hashequivserver` document of the Yocto Project Development
265 Tasks Manual to setup Hash Equivalence server.
266
242.. _structure-build-conf-local.conf: 267.. _structure-build-conf-local.conf:
243 268
244``build/conf/local.conf`` 269``build/conf/local.conf``
@@ -253,9 +278,9 @@ variables are hard-coded for various reasons but such variables are
253relatively rare. 278relatively rare.
254 279
255At a minimum, you would normally edit this file to select the target 280At a minimum, you would normally edit this file to select the target
256``MACHINE``, which package types you wish to use 281:term:`MACHINE`, which package types you wish to use
257(:term:`PACKAGE_CLASSES`), and the location from 282(:term:`PACKAGE_CLASSES`), and the location from
258which you want to access downloaded files (``DL_DIR``). 283which you want to access downloaded files (:term:`DL_DIR`).
259 284
260If ``local.conf`` is not present when you start the build, the 285If ``local.conf`` is not present when you start the build, the
261OpenEmbedded build system creates it from ``local.conf.sample`` when you 286OpenEmbedded build system creates it from ``local.conf.sample`` when you
@@ -263,16 +288,15 @@ OpenEmbedded build system creates it from ``local.conf.sample`` when you
263:ref:`structure-core-script`. 288:ref:`structure-core-script`.
264 289
265The source ``local.conf.sample`` file used depends on the 290The source ``local.conf.sample`` file used depends on the
266``$TEMPLATECONF`` script variable, which defaults to ``meta-poky/conf/`` 291:term:`TEMPLATECONF` script variable, which defaults to ``meta-poky/conf/templates/default``
267when you are building from the Yocto Project development environment, 292when you are building from the Yocto Project development environment,
268and to ``meta/conf/`` when you are building from the OpenEmbedded-Core 293and to ``meta/conf/templates/default`` when you are building from the OpenEmbedded-Core
269environment. Because the script variable points to the source of the 294environment. Because the script variable points to the source of the
270``local.conf.sample`` file, this implies that you can configure your 295``local.conf.sample`` file, this implies that you can configure your
271build environment from any layer by setting the variable in the 296build environment from any layer by setting the variable in the
272top-level build environment setup script as follows: 297top-level build environment setup script as follows::
273::
274 298
275 TEMPLATECONF=your_layer/conf 299 TEMPLATECONF=your_layer/conf/templates/your_template_name
276 300
277Once the build process gets the sample 301Once the build process gets the sample
278file, it uses ``sed`` to substitute final 302file, it uses ``sed`` to substitute final
@@ -281,10 +305,10 @@ file, it uses ``sed`` to substitute final
281 305
282.. note:: 306.. note::
283 307
284 You can see how the ``TEMPLATECONF`` variable is used by looking at the 308 You can see how the :term:`TEMPLATECONF` variable is used by looking at the
285 ``scripts/oe-setup-builddir``` script in the :term:`Source Directory`. 309 ``scripts/oe-setup-builddir`` script in the :term:`Source Directory`.
286 You can find the Yocto Project version of the ``local.conf.sample`` file in 310 You can find the Yocto Project version of the ``local.conf.sample`` file in
287 the ``meta-poky/conf`` directory. 311 the ``meta-poky/conf/templates/default`` directory.
288 312
289.. _structure-build-conf-bblayers.conf: 313.. _structure-build-conf-bblayers.conf:
290 314
@@ -292,7 +316,7 @@ file, it uses ``sed`` to substitute final
292---------------------------- 316----------------------------
293 317
294This configuration file defines 318This configuration file defines
295:ref:`layers <dev-manual/common-tasks:understanding and creating layers>`, 319:ref:`layers <dev-manual/layers:understanding and creating layers>`,
296which are directory trees, traversed (or walked) by BitBake. The 320which are directory trees, traversed (or walked) by BitBake. The
297``bblayers.conf`` file uses the :term:`BBLAYERS` 321``bblayers.conf`` file uses the :term:`BBLAYERS`
298variable to list the layers BitBake tries to find. 322variable to list the layers BitBake tries to find.
@@ -303,34 +327,52 @@ you ``source`` the top-level build environment setup script (i.e.
303:ref:`structure-core-script`). 327:ref:`structure-core-script`).
304 328
305As with the ``local.conf`` file, the source ``bblayers.conf.sample`` 329As with the ``local.conf`` file, the source ``bblayers.conf.sample``
306file used depends on the ``$TEMPLATECONF`` script variable, which 330file used depends on the :term:`TEMPLATECONF` script variable, which
307defaults to ``meta-poky/conf/`` when you are building from the Yocto 331defaults to ``meta-poky/conf/templates/default`` when you are building from the Yocto
308Project development environment, and to ``meta/conf/`` when you are 332Project development environment, and to ``meta/conf/templates/default`` when you are
309building from the OpenEmbedded-Core environment. Because the script 333building from the OpenEmbedded-Core environment. Because the script
310variable points to the source of the ``bblayers.conf.sample`` file, this 334variable points to the source of the ``bblayers.conf.sample`` file, this
311implies that you can base your build from any layer by setting the 335implies that you can base your build from any layer by setting the
312variable in the top-level build environment setup script as follows: 336variable in the top-level build environment setup script as follows::
313::
314 337
315 TEMPLATECONF=your_layer/conf 338 TEMPLATECONF=your_layer/conf/templates/your_template_name
316 339
317Once the build process gets the sample file, it uses ``sed`` to substitute final 340Once the build process gets the sample file, it uses ``sed`` to substitute final
318``${``\ :term:`OEROOT`\ ``}`` values for all ``##OEROOT##`` values. 341``${``\ :term:`OEROOT`\ ``}`` values for all ``##OEROOT##`` values.
319 342
320.. note:: 343.. note::
321 344
322 You can see how the ``TEMPLATECONF`` variable ``scripts/oe-setup-builddir`` 345 You can see how the :term:`TEMPLATECONF` variable is defined by the ``scripts/oe-setup-builddir``
323 script in the :term:`Source Directory`. You can find the Yocto Project 346 script in the :term:`Source Directory`. You can find the Yocto Project
324 version of the ``bblayers.conf.sample`` file in the ``meta-poky/conf/`` 347 version of the ``bblayers.conf.sample`` file in the ``meta-poky/conf/templates/default``
325 directory. 348 directory.
326 349
327.. _structure-build-conf-sanity_info: 350.. _structure-build-conf-bblock.conf:
351
352``build/conf/bblock.conf``
353--------------------------
354
355This configuration file is generated by :doc:`bblock </dev-manual/bblock>` and
356contains the signatures locked by ``bblock``. By default, it does not exist
357and will be created upon the first invocation of ``bblock``.
358
359.. _structure-build-conf-toolcfg.conf:
328 360
329``build/cache/sanity_info`` 361``build/conf/toolcfg.conf``
330--------------------------- 362---------------------------
331 363
332This file indicates the state of the sanity checks and is created during 364This file contains configuration variables that are automatically modified by
333the build. 365tools such as :oe_git:`bitbake-config-build </bitbake/tree/bin/bitbake-config-build>`.
366This file should not be modified manually.
367
368.. _structure-build-conf-auto.conf:
369
370``build/conf/auto.conf``
371------------------------
372
373This file is intended for use by continuous integration environments, such as the
374Yocto Project's :doc:`Autobuilder </test-manual/understand-autobuilder>`. It
375should not be created or modified when running local builds.
334 376
335.. _structure-build-downloads: 377.. _structure-build-downloads:
336 378
@@ -340,7 +382,7 @@ the build.
340This directory contains downloaded upstream source tarballs. You can 382This directory contains downloaded upstream source tarballs. You can
341reuse the directory for multiple builds or move the directory to another 383reuse the directory for multiple builds or move the directory to another
342location. You can control the location of this directory through the 384location. You can control the location of this directory through the
343``DL_DIR`` variable. 385:term:`DL_DIR` variable.
344 386
345.. _structure-build-sstate-cache: 387.. _structure-build-sstate-cache:
346 388
@@ -350,7 +392,7 @@ location. You can control the location of this directory through the
350This directory contains the shared state cache. You can reuse the 392This directory contains the shared state cache. You can reuse the
351directory for multiple builds or move the directory to another location. 393directory for multiple builds or move the directory to another location.
352You can control the location of this directory through the 394You can control the location of this directory through the
353``SSTATE_DIR`` variable. 395:term:`SSTATE_DIR` variable.
354 396
355.. _structure-build-tmp: 397.. _structure-build-tmp:
356 398
@@ -370,14 +412,15 @@ remove the ``build/sstate-cache`` directory.
370.. _structure-build-tmp-buildstats: 412.. _structure-build-tmp-buildstats:
371 413
372``build/tmp/buildstats/`` 414``build/tmp/buildstats/``
373------------------------- 415~~~~~~~~~~~~~~~~~~~~~~~~~
374 416
375This directory stores the build statistics. 417This directory stores the build statistics as generated by the
418:ref:`ref-classes-buildstats` class.
376 419
377.. _structure-build-tmp-cache: 420.. _structure-build-tmp-cache:
378 421
379``build/tmp/cache/`` 422``build/tmp/cache/``
380-------------------- 423~~~~~~~~~~~~~~~~~~~~
381 424
382When BitBake parses the metadata (recipes and configuration files), it 425When BitBake parses the metadata (recipes and configuration files), it
383caches the results in ``build/tmp/cache/`` to speed up future builds. 426caches the results in ``build/tmp/cache/`` to speed up future builds.
@@ -393,7 +436,7 @@ cache is reused. If the file has changed, it is reparsed.
393.. _structure-build-tmp-deploy: 436.. _structure-build-tmp-deploy:
394 437
395``build/tmp/deploy/`` 438``build/tmp/deploy/``
396--------------------- 439~~~~~~~~~~~~~~~~~~~~~
397 440
398This directory contains any "end result" output from the OpenEmbedded 441This directory contains any "end result" output from the OpenEmbedded
399build process. The :term:`DEPLOY_DIR` variable points 442build process. The :term:`DEPLOY_DIR` variable points
@@ -406,7 +449,7 @@ Project Overview and Concepts Manual.
406.. _structure-build-tmp-deploy-deb: 449.. _structure-build-tmp-deploy-deb:
407 450
408``build/tmp/deploy/deb/`` 451``build/tmp/deploy/deb/``
409------------------------- 452^^^^^^^^^^^^^^^^^^^^^^^^^
410 453
411This directory receives any ``.deb`` packages produced by the build 454This directory receives any ``.deb`` packages produced by the build
412process. The packages are sorted into feeds for different architecture 455process. The packages are sorted into feeds for different architecture
@@ -415,7 +458,7 @@ types.
415.. _structure-build-tmp-deploy-rpm: 458.. _structure-build-tmp-deploy-rpm:
416 459
417``build/tmp/deploy/rpm/`` 460``build/tmp/deploy/rpm/``
418------------------------- 461^^^^^^^^^^^^^^^^^^^^^^^^^
419 462
420This directory receives any ``.rpm`` packages produced by the build 463This directory receives any ``.rpm`` packages produced by the build
421process. The packages are sorted into feeds for different architecture 464process. The packages are sorted into feeds for different architecture
@@ -424,27 +467,27 @@ types.
424.. _structure-build-tmp-deploy-ipk: 467.. _structure-build-tmp-deploy-ipk:
425 468
426``build/tmp/deploy/ipk/`` 469``build/tmp/deploy/ipk/``
427------------------------- 470^^^^^^^^^^^^^^^^^^^^^^^^^
428 471
429This directory receives ``.ipk`` packages produced by the build process. 472This directory receives ``.ipk`` packages produced by the build process.
430 473
431.. _structure-build-tmp-deploy-licenses: 474.. _structure-build-tmp-deploy-licenses:
432 475
433``build/tmp/deploy/licenses/`` 476``build/tmp/deploy/licenses/``
434------------------------------ 477^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
435 478
436This directory receives package licensing information. For example, the 479This directory receives package licensing information. For example, the
437directory contains sub-directories for ``bash``, ``busybox``, and 480directory contains sub-directories for ``bash``, ``busybox``, and
438``glibc`` (among others) that in turn contain appropriate ``COPYING`` 481``glibc`` (among others) that in turn contain appropriate ``COPYING``
439license files with other licensing information. For information on 482license files with other licensing information. For information on
440licensing, see the 483licensing, see the
441":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`" 484":ref:`dev-manual/licenses:maintaining open source license compliance during your product's lifecycle`"
442section in the Yocto Project Development Tasks Manual. 485section in the Yocto Project Development Tasks Manual.
443 486
444.. _structure-build-tmp-deploy-images: 487.. _structure-build-tmp-deploy-images:
445 488
446``build/tmp/deploy/images/`` 489``build/tmp/deploy/images/``
447---------------------------- 490^^^^^^^^^^^^^^^^^^^^^^^^^^^^
448 491
449This directory is populated with the basic output objects of the build 492This directory is populated with the basic output objects of the build
450(think of them as the "generated artifacts" of the build process), 493(think of them as the "generated artifacts" of the build process),
@@ -463,8 +506,7 @@ image again.
463If you do accidentally delete files here, you will need to force them to 506If you do accidentally delete files here, you will need to force them to
464be re-created. In order to do that, you will need to know the target 507be re-created. In order to do that, you will need to know the target
465that produced them. For example, these commands rebuild and re-create 508that produced them. For example, these commands rebuild and re-create
466the kernel files: 509the kernel files::
467::
468 510
469 $ bitbake -c clean virtual/kernel 511 $ bitbake -c clean virtual/kernel
470 $ bitbake virtual/kernel 512 $ bitbake virtual/kernel
@@ -472,7 +514,7 @@ the kernel files:
472.. _structure-build-tmp-deploy-sdk: 514.. _structure-build-tmp-deploy-sdk:
473 515
474``build/tmp/deploy/sdk/`` 516``build/tmp/deploy/sdk/``
475------------------------- 517^^^^^^^^^^^^^^^^^^^^^^^^^
476 518
477The OpenEmbedded build system creates this directory to hold toolchain 519The OpenEmbedded build system creates this directory to hold toolchain
478installer scripts which, when executed, install the sysroot that matches 520installer scripts which, when executed, install the sysroot that matches
@@ -481,10 +523,34 @@ the ":ref:`sdk-manual/appendix-obtain:building an sdk installer`"
481section in the Yocto Project Application Development and the Extensible 523section in the Yocto Project Application Development and the Extensible
482Software Development Kit (eSDK) manual. 524Software Development Kit (eSDK) manual.
483 525
526.. _structure-build-tmp-hosttools:
527
528``build/tmp/hosttools/``
529~~~~~~~~~~~~~~~~~~~~~~~~
530
531The OpenEmbedded build system uses this directory to create symbolic links to
532some of the host components that are allowed to be called within tasks. These
533are basic components listed in the :ref:`ref-manual/system-requirements:required
534packages for the build host` section. These components are also listed in the
535:term:`HOSTTOOLS` variable and are limited to this list to prevent host
536contamination.
537
538.. _structure-build-tmp-pkgdata:
539
540``build/tmp/pkgdata/``
541~~~~~~~~~~~~~~~~~~~~~~
542
543The OpenEmbedded build system uses this directory to store package metadata
544generated during the :ref:`ref-tasks-packagedata` task. The files stored in this
545directory contain information about each output package produced by the
546OpenEmbedded build system, and are used in different ways by the build system
547such as ":ref:`dev-manual/debugging:viewing package information with
548``oe-pkgdata-util```".
549
484.. _structure-build-tmp-sstate-control: 550.. _structure-build-tmp-sstate-control:
485 551
486``build/tmp/sstate-control/`` 552``build/tmp/sstate-control/``
487----------------------------- 553~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
488 554
489The OpenEmbedded build system uses this directory for the shared state 555The OpenEmbedded build system uses this directory for the shared state
490manifest files. The shared state code uses these files to record the 556manifest files. The shared state code uses these files to record the
@@ -497,7 +563,7 @@ another.
497.. _structure-build-tmp-sysroots-components: 563.. _structure-build-tmp-sysroots-components:
498 564
499``build/tmp/sysroots-components/`` 565``build/tmp/sysroots-components/``
500---------------------------------- 566~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
501 567
502This directory is the location of the sysroot contents that the task 568This directory is the location of the sysroot contents that the task
503:ref:`ref-tasks-prepare_recipe_sysroot` 569:ref:`ref-tasks-prepare_recipe_sysroot`
@@ -512,11 +578,11 @@ should be automatic, and recipes should not directly reference
512.. _structure-build-tmp-sysroots: 578.. _structure-build-tmp-sysroots:
513 579
514``build/tmp/sysroots/`` 580``build/tmp/sysroots/``
515----------------------- 581~~~~~~~~~~~~~~~~~~~~~~~
516 582
517Previous versions of the OpenEmbedded build system used to create a 583Previous versions of the OpenEmbedded build system used to create a
518global shared sysroot per machine along with a native sysroot. Beginning 584global shared sysroot per machine along with a native sysroot. Since
519with the 2.3 version of the Yocto Project, sysroots exist in 585the 2.3 version of the Yocto Project, there are sysroots in
520recipe-specific :term:`WORKDIR` directories. Thus, the 586recipe-specific :term:`WORKDIR` directories. Thus, the
521``build/tmp/sysroots/`` directory is unused. 587``build/tmp/sysroots/`` directory is unused.
522 588
@@ -530,13 +596,12 @@ recipe-specific :term:`WORKDIR` directories. Thus, the
530.. _structure-build-tmp-stamps: 596.. _structure-build-tmp-stamps:
531 597
532``build/tmp/stamps/`` 598``build/tmp/stamps/``
533--------------------- 599~~~~~~~~~~~~~~~~~~~~~
534 600
535This directory holds information that BitBake uses for accounting 601This directory holds information that BitBake uses for accounting
536purposes to track what tasks have run and when they have run. The 602purposes to track what tasks have run and when they have run. The
537directory is sub-divided by architecture, package name, and version. 603directory is sub-divided by architecture, package name, and version.
538Following is an example: 604Here is an example::
539::
540 605
541 stamps/all-poky-linux/distcc-config/1.0-r0.do_build-2fdd....2do 606 stamps/all-poky-linux/distcc-config/1.0-r0.do_build-2fdd....2do
542 607
@@ -551,17 +616,17 @@ section in the Yocto Project Overview and Concepts Manual.
551.. _structure-build-tmp-log: 616.. _structure-build-tmp-log:
552 617
553``build/tmp/log/`` 618``build/tmp/log/``
554------------------ 619~~~~~~~~~~~~~~~~~~
555 620
556This directory contains general logs that are not otherwise placed using 621This directory contains general logs that are not otherwise placed using
557the package's ``WORKDIR``. Examples of logs are the output from the 622the package's :term:`WORKDIR`. Examples of logs are the output from the
558``do_check_pkg`` or ``do_distro_check`` tasks. Running a build does not 623``do_check_pkg`` or ``do_distro_check`` tasks. Running a build does not
559necessarily mean this directory is created. 624necessarily mean this directory is created.
560 625
561.. _structure-build-tmp-work: 626.. _structure-build-tmp-work:
562 627
563``build/tmp/work/`` 628``build/tmp/work/``
564------------------- 629~~~~~~~~~~~~~~~~~~~
565 630
566This directory contains architecture-specific work sub-directories for 631This directory contains architecture-specific work sub-directories for
567packages built by BitBake. All tasks execute from the appropriate work 632packages built by BitBake. All tasks execute from the appropriate work
@@ -575,15 +640,15 @@ It is worth considering the structure of a typical work directory. As an
575example, consider ``linux-yocto-kernel-3.0`` on the machine ``qemux86`` 640example, consider ``linux-yocto-kernel-3.0`` on the machine ``qemux86``
576built within the Yocto Project. For this package, a work directory of 641built within the Yocto Project. For this package, a work directory of
577``tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+<.....>``, referred 642``tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+<.....>``, referred
578to as the ``WORKDIR``, is created. Within this directory, the source is 643to as the :term:`WORKDIR`, is created. Within this directory, the source is
579unpacked to ``linux-qemux86-standard-build`` and then patched by Quilt. 644unpacked to ``sources/linux-qemux86-standard-build`` and then patched by Quilt.
580(See the ":ref:`dev-manual/common-tasks:using quilt in your workflow`" section in 645(See the ":ref:`dev-manual/quilt:using quilt in your workflow`" section in
581the Yocto Project Development Tasks Manual for more information.) Within 646the Yocto Project Development Tasks Manual for more information.) Within
582the ``linux-qemux86-standard-build`` directory, standard Quilt 647the ``linux-qemux86-standard-build`` directory, standard Quilt
583directories ``linux-3.0/patches`` and ``linux-3.0/.pc`` are created, and 648directories ``linux-3.0/patches`` and ``linux-3.0/.pc`` are created, and
584standard Quilt commands can be used. 649standard Quilt commands can be used.
585 650
586There are other directories generated within ``WORKDIR``. The most 651There are other directories generated within :term:`WORKDIR`. The most
587important directory is ``WORKDIR/temp/``, which has log files for each 652important directory is ``WORKDIR/temp/``, which has log files for each
588task (``log.do_*.pid``) and contains the scripts BitBake runs for each 653task (``log.do_*.pid``) and contains the scripts BitBake runs for each
589task (``run.do_*.pid``). The ``WORKDIR/image/`` directory is where "make 654task (``run.do_*.pid``). The ``WORKDIR/image/`` directory is where "make
@@ -593,9 +658,9 @@ install" places its output that is then split into sub-packages within
593.. _structure-build-tmp-work-tunearch-recipename-version: 658.. _structure-build-tmp-work-tunearch-recipename-version:
594 659
595``build/tmp/work/tunearch/recipename/version/`` 660``build/tmp/work/tunearch/recipename/version/``
596----------------------------------------------- 661^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
597 662
598The recipe work directory - ``${WORKDIR}``. 663The recipe work directory --- ``${WORKDIR}``.
599 664
600As described earlier in the 665As described earlier in the
601":ref:`structure-build-tmp-sysroots`" section, 666":ref:`structure-build-tmp-sysroots`" section,
@@ -607,7 +672,7 @@ constructed using the architecture of the given build (e.g.
607name, and the version of the recipe (i.e. 672name, and the version of the recipe (i.e.
608:term:`PE`\ ``:``\ :term:`PV`\ ``-``\ :term:`PR`). 673:term:`PE`\ ``:``\ :term:`PV`\ ``-``\ :term:`PR`).
609 674
610A number of key subdirectories exist within each recipe work directory: 675Here are key subdirectories within each recipe work directory:
611 676
612- ``${WORKDIR}/temp``: Contains the log files of each task executed for 677- ``${WORKDIR}/temp``: Contains the log files of each task executed for
613 this recipe, the "run" files for each executed task, which contain 678 this recipe, the "run" files for each executed task, which contain
@@ -629,8 +694,8 @@ A number of key subdirectories exist within each recipe work directory:
629 split into individual packages. 694 split into individual packages.
630 695
631- ``${WORKDIR}/packages-split``: Contains the output of the 696- ``${WORKDIR}/packages-split``: Contains the output of the
632 ``do_package`` task after the output has been split into individual 697 :ref:`ref-tasks-package` task after the output has been split into individual
633 packages. Subdirectories exist for each individual package created by 698 packages. There are subdirectories for each individual package created by
634 the recipe. 699 the recipe.
635 700
636- ``${WORKDIR}/recipe-sysroot``: A directory populated with the target 701- ``${WORKDIR}/recipe-sysroot``: A directory populated with the target
@@ -651,38 +716,46 @@ A number of key subdirectories exist within each recipe work directory:
651.. _structure-build-work-shared: 716.. _structure-build-work-shared:
652 717
653``build/tmp/work-shared/`` 718``build/tmp/work-shared/``
654-------------------------- 719~~~~~~~~~~~~~~~~~~~~~~~~~~
655 720
656For efficiency, the OpenEmbedded build system creates and uses this 721For efficiency, the OpenEmbedded build system creates and uses this
657directory to hold recipes that share a work directory with other 722directory to hold recipes that share a work directory with other
658recipes. In practice, this is only used for ``gcc`` and its variants 723recipes. This is for example used for ``gcc`` and its variants (e.g.
659(e.g. ``gcc-cross``, ``libgcc``, ``gcc-runtime``, and so forth). 724``gcc-cross``, ``libgcc``, ``gcc-runtime``, and so forth), or by the
725:ref:`ref-classes-kernel` class to make the kernel source code and kernel build
726artifacts available to out-of-tree kernel modules or other kernel-dependent
727recipes.
728
729In practice, only a few recipes make use of the ``work-shared`` directory. This
730directory is especially useful for recipes that would induce a lot of storage
731space if they were to be shared with the standard :term:`Sysroot` mechanism.
660 732
661.. _structure-meta: 733.. _structure-meta:
662 734
663The Metadata - ``meta/`` 735The Metadata --- ``meta/``
664======================== 736==========================
665 737
666As mentioned previously, :term:`Metadata` is the core of the 738As mentioned previously, :term:`Metadata` is the core of the
667Yocto Project. Metadata has several important subdivisions: 739Yocto Project. Metadata has several important subdivisions:
668 740
669.. _structure-meta-classes: 741.. _structure-meta-classes:
670 742
671``meta/classes/`` 743``meta/classes*/``
672----------------- 744------------------
673 745
674This directory contains the ``*.bbclass`` files. Class files are used to 746These directories contain the ``*.bbclass`` files. Class files are used to
675abstract common code so it can be reused by multiple packages. Every 747abstract common code so it can be reused by multiple packages. Every
676package inherits the ``base.bbclass`` file. Examples of other important 748package inherits the :ref:`ref-classes-base` file. Examples of other important
677classes are ``autotools.bbclass``, which in theory allows any 749classes are :ref:`ref-classes-autotools`, which in theory allows any
678Autotool-enabled package to work with the Yocto Project with minimal 750Autotool-enabled package to work with the Yocto Project with minimal
679effort. Another example is ``kernel.bbclass`` that contains common code 751effort. Another example is :ref:`ref-classes-kernel` that contains common code
680and functions for working with the Linux kernel. Functions like image 752and functions for working with the Linux kernel. Functions like image
681generation or packaging also have their specific class files such as 753generation or packaging also have their specific class files such as
682``image.bbclass``, ``rootfs_*.bbclass`` and ``package*.bbclass``. 754:ref:`ref-classes-image`, :ref:`ref-classes-rootfs*` and
755:ref:`package*.bbclass <ref-classes-package>`.
683 756
684For reference information on classes, see the 757For reference information on classes, see the
685":ref:`ref-manual/classes:Classes`" chapter. 758":doc:`/ref-manual/classes`" chapter.
686 759
687.. _structure-meta-conf: 760.. _structure-meta-conf:
688 761
@@ -700,7 +773,7 @@ distribution configuration file.
700.. _structure-meta-conf-machine: 773.. _structure-meta-conf-machine:
701 774
702``meta/conf/machine/`` 775``meta/conf/machine/``
703---------------------- 776~~~~~~~~~~~~~~~~~~~~~~
704 777
705This directory contains all the machine configuration files. If you set 778This directory contains all the machine configuration files. If you set
706``MACHINE = "qemux86"``, the OpenEmbedded build system looks for a 779``MACHINE = "qemux86"``, the OpenEmbedded build system looks for a
@@ -711,11 +784,11 @@ support for a new machine to the Yocto Project, look in this directory.
711.. _structure-meta-conf-distro: 784.. _structure-meta-conf-distro:
712 785
713``meta/conf/distro/`` 786``meta/conf/distro/``
714--------------------- 787~~~~~~~~~~~~~~~~~~~~~
715 788
716The contents of this directory controls any distribution-specific 789The contents of this directory controls any distribution-specific
717configurations. For the Yocto Project, the ``defaultsetup.conf`` is the 790configurations. For the Yocto Project, the ``defaultsetup.conf`` is the
718main file here. This directory includes the versions and the ``SRCDATE`` 791main file here. This directory includes the versions and the :term:`SRCDATE`
719definitions for applications that are configured here. An example of an 792definitions for applications that are configured here. An example of an
720alternative configuration might be ``poky-bleeding.conf``. Although this 793alternative configuration might be ``poky-bleeding.conf``. Although this
721file mainly inherits its configuration from Poky. 794file mainly inherits its configuration from Poky.
@@ -723,7 +796,7 @@ file mainly inherits its configuration from Poky.
723.. _structure-meta-conf-machine-sdk: 796.. _structure-meta-conf-machine-sdk:
724 797
725``meta/conf/machine-sdk/`` 798``meta/conf/machine-sdk/``
726-------------------------- 799~~~~~~~~~~~~~~~~~~~~~~~~~~
727 800
728The OpenEmbedded build system searches this directory for configuration 801The OpenEmbedded build system searches this directory for configuration
729files that correspond to the value of 802files that correspond to the value of
@@ -748,7 +821,9 @@ and lists of files and directories with known permissions.
748------------- 821-------------
749 822
750This directory contains OpenEmbedded Python library code used during the 823This directory contains OpenEmbedded Python library code used during the
751build process. 824build process. It is enabled via the ``addpylib`` directive in
825``meta/conf/local.conf``. For more information, see
826:ref:`bitbake-user-manual/bitbake-user-manual-metadata:extending python library code`.
752 827
753.. _structure-meta-recipes-bsp: 828.. _structure-meta-recipes-bsp:
754 829
@@ -789,7 +864,7 @@ system. The tools, however, can also be used on targets.
789 864
790This directory contains non-essential applications that add features 865This directory contains non-essential applications that add features
791compared to the alternatives in core. You might need this directory for 866compared to the alternatives in core. You might need this directory for
792full tool functionality or for Linux Standard Base (LSB) compliance. 867full tool functionality.
793 868
794.. _structure-meta-recipes-gnome: 869.. _structure-meta-recipes-gnome:
795 870
@@ -815,14 +890,6 @@ libraries.
815This directory contains the kernel and generic applications and 890This directory contains the kernel and generic applications and
816libraries that have strong kernel dependencies. 891libraries that have strong kernel dependencies.
817 892
818.. _structure-meta-recipes-lsb4:
819
820``meta/recipes-lsb4/``
821----------------------
822
823This directory contains recipes specifically added to support the Linux
824Standard Base (LSB) version 4.x.
825
826.. _structure-meta-recipes-multimedia: 893.. _structure-meta-recipes-multimedia:
827 894
828``meta/recipes-multimedia/`` 895``meta/recipes-multimedia/``
diff --git a/documentation/ref-manual/svg/releases.svg b/documentation/ref-manual/svg/releases.svg
new file mode 100644
index 0000000000..3a379078b8
--- /dev/null
+++ b/documentation/ref-manual/svg/releases.svg
@@ -0,0 +1,1898 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg
3 version="1.1"
4 id="svg2"
5 width="1992.7236"
6 height="613.35602"
7 viewBox="0 0 1992.7236 613.35599"
8 sodipodi:docname="releases.svg"
9 inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
10 inkscape:export-filename="../../../../../../../../tmp/releases.png"
11 inkscape:export-xdpi="96"
12 inkscape:export-ydpi="96"
13 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15 xmlns="http://www.w3.org/2000/svg"
16 xmlns:svg="http://www.w3.org/2000/svg"
17 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
18 xmlns:cc="http://creativecommons.org/ns#"
19 xmlns:dc="http://purl.org/dc/elements/1.1/">
20 <title
21 id="title8568">Yocto Project Release Timeline</title>
22 <metadata
23 id="metadata8">
24 <rdf:RDF>
25 <cc:Work
26 rdf:about="">
27 <dc:format>image/svg+xml</dc:format>
28 <dc:type
29 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
30 <dc:title>Yocto Project Release Timeline</dc:title>
31 <dc:creator>
32 <cc:Agent>
33 <dc:title>The Yocto Project</dc:title>
34 </cc:Agent>
35 </dc:creator>
36 <cc:license
37 rdf:resource="http://artlibre.org/licence/lal" />
38 </cc:Work>
39 <cc:License
40 rdf:about="http://artlibre.org/licence/lal">
41 <cc:permits
42 rdf:resource="http://creativecommons.org/ns#Reproduction" />
43 <cc:permits
44 rdf:resource="http://creativecommons.org/ns#Distribution" />
45 <cc:permits
46 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
47 <cc:requires
48 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
49 <cc:requires
50 rdf:resource="http://creativecommons.org/ns#Notice" />
51 <cc:requires
52 rdf:resource="http://creativecommons.org/ns#Attribution" />
53 </cc:License>
54 </rdf:RDF>
55 </metadata>
56 <defs
57 id="defs6">
58 <inkscape:path-effect
59 effect="powerstroke"
60 id="path-effect6121"
61 is_visible="true"
62 lpeversion="1"
63 offset_points="0,0.5"
64 sort_points="true"
65 interpolator_type="CubicBezierJohan"
66 interpolator_beta="0.2"
67 start_linecap_type="zerowidth"
68 linejoin_type="extrp_arc"
69 miter_limit="4"
70 scale_width="1"
71 end_linecap_type="zerowidth"
72 not_jump="false"
73 message="" />
74 <marker
75 style="overflow:visible"
76 id="marker5783"
77 refX="0"
78 refY="0"
79 orient="auto"
80 inkscape:stockid="Arrow2Mend"
81 inkscape:isstock="true">
82 <path
83 transform="scale(-0.6)"
84 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
85 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
86 id="path5781" />
87 </marker>
88 <marker
89 style="overflow:visible"
90 id="marker5623"
91 refX="0"
92 refY="0"
93 orient="auto"
94 inkscape:stockid="Arrow2Mend"
95 inkscape:isstock="true">
96 <path
97 transform="scale(-0.6)"
98 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
99 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
100 id="path5621" />
101 </marker>
102 <marker
103 style="overflow:visible"
104 id="marker5487"
105 refX="0"
106 refY="0"
107 orient="auto"
108 inkscape:stockid="Arrow2Mend"
109 inkscape:isstock="true">
110 <path
111 transform="scale(-0.6)"
112 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
113 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
114 id="path5485" />
115 </marker>
116 <marker
117 style="overflow:visible"
118 id="marker5285"
119 refX="0"
120 refY="0"
121 orient="auto"
122 inkscape:stockid="Arrow2Mstart"
123 inkscape:isstock="true">
124 <path
125 transform="scale(0.6)"
126 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
127 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
128 id="path5283" />
129 </marker>
130 <marker
131 style="overflow:visible"
132 id="marker5161"
133 refX="0"
134 refY="0"
135 orient="auto"
136 inkscape:stockid="Arrow2Mend"
137 inkscape:isstock="true">
138 <path
139 transform="scale(-0.6)"
140 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
141 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
142 id="path5159" />
143 </marker>
144 <marker
145 style="overflow:visible"
146 id="marker4860"
147 refX="0"
148 refY="0"
149 orient="auto"
150 inkscape:stockid="Arrow2Mend"
151 inkscape:isstock="true">
152 <path
153 transform="scale(-0.6)"
154 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
155 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
156 id="path4858" />
157 </marker>
158 <marker
159 style="overflow:visible"
160 id="marker4504"
161 refX="0"
162 refY="0"
163 orient="auto"
164 inkscape:stockid="Arrow2Mend"
165 inkscape:isstock="true">
166 <path
167 transform="scale(-0.6)"
168 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
169 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
170 id="path4502" />
171 </marker>
172 <marker
173 style="overflow:visible"
174 id="Arrow1Mend"
175 refX="0"
176 refY="0"
177 orient="auto"
178 inkscape:stockid="Arrow1Mend"
179 inkscape:isstock="true">
180 <path
181 transform="matrix(-0.4,0,0,-0.4,-4,0)"
182 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:1pt;stroke-opacity:1"
183 d="M 0,0 5,-5 -12.5,0 5,5 Z"
184 id="path3318" />
185 </marker>
186 <marker
187 style="overflow:visible"
188 id="marker4174"
189 refX="0"
190 refY="0"
191 orient="auto"
192 inkscape:stockid="Arrow2Mstart"
193 inkscape:isstock="true">
194 <path
195 transform="scale(0.6)"
196 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
197 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
198 id="path4172" />
199 </marker>
200 <marker
201 style="overflow:visible"
202 id="Arrow2Mend"
203 refX="0"
204 refY="0"
205 orient="auto"
206 inkscape:stockid="Arrow2Mend"
207 inkscape:isstock="true">
208 <path
209 transform="scale(-0.6)"
210 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
211 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
212 id="path3336" />
213 </marker>
214 <marker
215 style="overflow:visible"
216 id="Arrow1Mstart"
217 refX="0"
218 refY="0"
219 orient="auto"
220 inkscape:stockid="Arrow1Mstart"
221 inkscape:isstock="true">
222 <path
223 transform="matrix(0.4,0,0,0.4,4,0)"
224 style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:1pt;stroke-opacity:1"
225 d="M 0,0 5,-5 -12.5,0 5,5 Z"
226 id="path3315" />
227 </marker>
228 <marker
229 style="overflow:visible"
230 id="Arrow2Lstart"
231 refX="0"
232 refY="0"
233 orient="auto"
234 inkscape:stockid="Arrow2Lstart"
235 inkscape:isstock="true">
236 <path
237 transform="matrix(1.1,0,0,1.1,1.1,0)"
238 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
239 style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
240 id="path3327" />
241 </marker>
242 <marker
243 style="overflow:visible"
244 id="Arrow1Lstart"
245 refX="0"
246 refY="0"
247 orient="auto"
248 inkscape:stockid="Arrow1Lstart"
249 inkscape:isstock="true">
250 <path
251 transform="matrix(0.8,0,0,0.8,10,0)"
252 style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:1pt;stroke-opacity:1"
253 d="M 0,0 5,-5 -12.5,0 5,5 Z"
254 id="path3309" />
255 </marker>
256 <linearGradient
257 id="linearGradient921"
258 inkscape:swatch="solid">
259 <stop
260 style="stop-color:#deddda;stop-opacity:1;"
261 offset="0"
262 id="stop919" />
263 </linearGradient>
264 <linearGradient
265 id="linearGradient6035-4">
266 <stop
267 id="stop6037-2"
268 style="stop-color:#ffffff"
269 offset="0" />
270 <stop
271 id="stop6039-9"
272 style="stop-color:#ffffff;stop-opacity:0"
273 offset="1" />
274 </linearGradient>
275 <marker
276 style="overflow:visible"
277 id="Arrow2Mstart-4"
278 refX="0"
279 refY="0"
280 orient="auto"
281 inkscape:stockid="Arrow2Mstart"
282 inkscape:isstock="true">
283 <path
284 transform="scale(0.6)"
285 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
286 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
287 id="path3333-2" />
288 </marker>
289 <marker
290 style="overflow:visible"
291 id="Arrow2Mend-2"
292 refX="0"
293 refY="0"
294 orient="auto"
295 inkscape:stockid="Arrow2Mend"
296 inkscape:isstock="true">
297 <path
298 transform="scale(-0.6)"
299 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
300 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
301 id="path3336-7" />
302 </marker>
303 <marker
304 style="overflow:visible"
305 id="marker5623-2"
306 refX="0"
307 refY="0"
308 orient="auto"
309 inkscape:stockid="Arrow2Mend"
310 inkscape:isstock="true">
311 <path
312 transform="scale(-0.6)"
313 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
314 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
315 id="path5621-3" />
316 </marker>
317 <marker
318 style="overflow:visible"
319 id="Arrow2Mend-4"
320 refX="0"
321 refY="0"
322 orient="auto"
323 inkscape:stockid="Arrow2Mend"
324 inkscape:isstock="true">
325 <path
326 transform="scale(-0.6)"
327 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
328 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
329 id="path3336-3" />
330 </marker>
331 <marker
332 style="overflow:visible"
333 id="marker5285-1"
334 refX="0"
335 refY="0"
336 orient="auto"
337 inkscape:stockid="Arrow2Mstart"
338 inkscape:isstock="true">
339 <path
340 transform="scale(0.6)"
341 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
342 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
343 id="path5283-7" />
344 </marker>
345 <marker
346 style="overflow:visible"
347 id="marker5161-4"
348 refX="0"
349 refY="0"
350 orient="auto"
351 inkscape:stockid="Arrow2Mend"
352 inkscape:isstock="true">
353 <path
354 transform="scale(-0.6)"
355 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
356 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
357 id="path5159-3" />
358 </marker>
359 <marker
360 style="overflow:visible"
361 id="marker5285-1-4"
362 refX="0"
363 refY="0"
364 orient="auto"
365 inkscape:stockid="Arrow2Mstart"
366 inkscape:isstock="true">
367 <path
368 transform="scale(0.6)"
369 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
370 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
371 id="path5283-7-6" />
372 </marker>
373 <marker
374 style="overflow:visible"
375 id="marker5161-4-9"
376 refX="0"
377 refY="0"
378 orient="auto"
379 inkscape:stockid="Arrow2Mend"
380 inkscape:isstock="true">
381 <path
382 transform="scale(-0.6)"
383 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
384 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
385 id="path5159-3-4" />
386 </marker>
387 <marker
388 style="overflow:visible"
389 id="marker4174-8"
390 refX="0"
391 refY="0"
392 orient="auto"
393 inkscape:stockid="Arrow2Mstart"
394 inkscape:isstock="true">
395 <path
396 transform="scale(0.6)"
397 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
398 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
399 id="path4172-8" />
400 </marker>
401 </defs>
402 <sodipodi:namedview
403 pagecolor="#ffffff"
404 bordercolor="#666666"
405 borderopacity="1"
406 objecttolerance="10"
407 gridtolerance="10"
408 guidetolerance="10"
409 inkscape:pageopacity="0"
410 inkscape:pageshadow="2"
411 inkscape:window-width="3826"
412 inkscape:window-height="2069"
413 id="namedview4"
414 showgrid="true"
415 inkscape:zoom="1.5536106"
416 inkscape:cx="1158.2696"
417 inkscape:cy="273.55632"
418 inkscape:window-x="2256"
419 inkscape:window-y="60"
420 inkscape:window-maximized="1"
421 inkscape:current-layer="g10"
422 inkscape:document-rotation="0"
423 inkscape:snap-perpendicular="true"
424 fit-margin-top="30"
425 lock-margins="true"
426 fit-margin-left="30"
427 fit-margin-right="30"
428 fit-margin-bottom="30"
429 inkscape:pagecheckerboard="0"
430 inkscape:showpageshadow="2"
431 inkscape:deskcolor="#d1d1d1"
432 showguides="true">
433 <inkscape:grid
434 type="xygrid"
435 id="grid1257"
436 originx="-289.06071"
437 originy="478.43017"
438 spacingy="1"
439 spacingx="1"
440 units="px"
441 visible="true" />
442 </sodipodi:namedview>
443 <g
444 inkscape:groupmode="layer"
445 inkscape:label="Image"
446 id="g10"
447 transform="translate(-289.06072,478.43022)">
448 <rect
449 style="fill:#333333;fill-opacity:0;stroke:#000000;stroke-width:0.713896;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-opacity:0"
450 id="rect1"
451 width="1992.0098"
452 height="612.64215"
453 x="289.41766"
454 y="-478.07327"
455 ry="24.97636" />
456 <path
457 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
458 d="m 563.40434,64.000628 v -524.414808 0 0"
459 id="path207708" />
460 <path
461 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
462 d="m 683.40434,64.000628 v -524.414808 0 0"
463 id="path207708-4" />
464 <path
465 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
466 d="m 803.40434,64.000628 v -524.414808 0 0"
467 id="path207708-4-3" />
468 <path
469 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
470 d="m 923.40434,64.000577 v -524.414757 0 0"
471 id="path207708-4-3-6" />
472 <path
473 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
474 d="m 1043.4043,64.000577 v -524.414757 0 0"
475 id="path207708-4-3-6-2" />
476 <path
477 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
478 d="m 1163.4043,64.000577 v -524.414757 0 0"
479 id="path207708-4-3-6-2-8" />
480 <path
481 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
482 d="m 1283.4043,64.000577 v -524.414757 0 0"
483 id="path207708-4-3-6-2-8-4" />
484 <path
485 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
486 d="m 1403.4043,64.000577 v -524.414757 0 0"
487 id="path207708-4-3-6-2-8-4-3" />
488 <path
489 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.475347;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
490 d="m 1523.4043,64.000568 v -415.757648 0 0"
491 id="path207708-4-3-6-2-8-4-3-8" />
492 <path
493 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
494 d="m 1523.4043,64.000577 v -524.414757 0 0"
495 id="path207708-4-3-6-2-8-4-3-8-0" />
496 <path
497 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
498 d="m 1643.3583,64.000565 v -524.414715 0 0"
499 id="path207708-4-3-6-2-8-4-3-8-4" />
500 <path
501 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
502 d="m 1763.4043,64.000565 v -524.414715 0 0"
503 id="path207708-4-3-6-2-8-4-3-8-4-0" />
504 <path
505 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
506 d="m 1883.7877,64.878769 v -524.414709 0 0"
507 id="path207708-4-3-6-2-8-4-3-8-4-0-8" />
508 <path
509 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
510 d="m 2002.9599,64.984489 v -524.414709 0 0"
511 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8" />
512 <path
513 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
514 d="m 2123.2232,62.984489 v -524.414709 0 0"
515 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8-1" />
516 <path
517 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
518 d="m 2243.313,63.984489 v -524.414709 0 0"
519 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8-1-9" />
520 <path
521 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
522 d="m 443.40434,64.000628 v -524.414808 0 0"
523 id="path207708-9" />
524 <path
525 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
526 d="m 323.40434,64.000608 v -375.000008 0 0"
527 id="path207708-9-6" />
528 <path
529 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
530 d="m 323.40434,64.000616 v -524.414766 0 0"
531 id="path207708-9-6-2" />
532 <text
533 xml:space="preserve"
534 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
535 x="142.22464"
536 y="565.10297"
537 id="text907"><tspan
538 sodipodi:role="line"
539 id="tspan905"
540 x="142.22464"
541 y="565.10297" /></text>
542 <text
543 xml:space="preserve"
544 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
545 x="98.363503"
546 y="637.8432"
547 id="text911"><tspan
548 sodipodi:role="line"
549 id="tspan909"
550 x="98.363503"
551 y="637.8432" /></text>
552 <text
553 xml:space="preserve"
554 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
555 x="-59.575905"
556 y="580.05695"
557 id="text915"><tspan
558 sodipodi:role="line"
559 id="tspan913"
560 x="-59.575905"
561 y="580.05695" /></text>
562 <rect
563 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
564 id="rect917-0-0-4-4-9-4"
565 width="160.00002"
566 height="45.000004"
567 x="443.40427"
568 y="-55.999405"
569 ry="2.2558987" />
570 <text
571 xml:space="preserve"
572 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
573 x="491.89841"
574 y="-36.604408"
575 id="text1185-3-55-4-0-0-0"><tspan
576 sodipodi:role="line"
577 x="491.89841"
578 y="-36.604408"
579 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
580 id="tspan957-2-8-6-3-9">Langdale</tspan><tspan
581 sodipodi:role="line"
582 x="491.89841"
583 y="-18.607729"
584 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
585 id="tspan10317-2-9-1">4.1</tspan></text>
586 <rect
587 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
588 id="rect917-0-0-4-4-9-4-5"
589 width="140.00003"
590 height="45.000004"
591 x="583.40436"
592 y="-110.99944"
593 ry="2.2558987" />
594 <text
595 xml:space="preserve"
596 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
597 x="639.46136"
598 y="-91.498215"
599 id="text1185-3-55-4-0-0-0-1"><tspan
600 sodipodi:role="line"
601 x="639.46136"
602 y="-91.498215"
603 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
604 id="tspan957-2-8-6-3-9-7">Mickledore</tspan><tspan
605 sodipodi:role="line"
606 x="639.46136"
607 y="-73.501534"
608 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
609 id="tspan10317-2-9-1-4">4.2</tspan></text>
610 <rect
611 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
612 id="rect917-0-0-4-4-9-4-5-3-9-2-3-6"
613 width="140"
614 height="45.000004"
615 x="923.65302"
616 y="-275.19217"
617 ry="2.2558987" />
618 <text
619 xml:space="preserve"
620 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
621 x="970.63739"
622 y="-256.32867"
623 id="text1185-3-55-4-0-0-0-1-1-6-4"><tspan
624 sodipodi:role="line"
625 x="970.63739"
626 y="-256.32867"
627 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
628 id="tspan957-2-8-6-3-9-7-4-2-0">Styhead</tspan><tspan
629 sodipodi:role="line"
630 x="970.63739"
631 y="-238.332"
632 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
633 id="tspan10317-2-9-1-4-6-5-6">5.1</tspan></text>
634 <rect
635 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
636 id="rect917-0-0-4-4-9-4-5-3-9-2-3-6-2"
637 width="140"
638 height="45.000004"
639 x="1043.4697"
640 y="-328.48172"
641 ry="2.2558987" />
642 <text
643 xml:space="preserve"
644 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
645 x="1090.4542"
646 y="-309.61823"
647 id="text1185-3-55-4-0-0-0-1-1-6-4-7"><tspan
648 sodipodi:role="line"
649 x="1090.4542"
650 y="-309.61823"
651 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
652 id="tspan957-2-8-6-3-9-7-4-2-0-0">Walnascar</tspan><tspan
653 sodipodi:role="line"
654 x="1090.4542"
655 y="-291.62155"
656 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
657 id="tspan10317-2-9-1-4-6-5-6-9">5.2</tspan></text>
658 <rect
659 style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
660 id="rect917-0-0-4-4-9-4-5-3-9-2-3-67"
661 width="140"
662 height="45.000004"
663 x="1163.6425"
664 y="-382.27469"
665 ry="2.2558987" />
666 <text
667 xml:space="preserve"
668 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
669 x="1214.9716"
670 y="-363.89413"
671 id="text1185-3-55-4-0-0-0-1-1-6-4-3-53"><tspan
672 sodipodi:role="line"
673 x="1214.9716"
674 y="-363.89413"
675 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
676 id="tspan957-2-8-6-3-9-7-4-2-0-5-5">Whinlatter</tspan><tspan
677 sodipodi:role="line"
678 x="1214.9716"
679 y="-345.89746"
680 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
681 id="tspan10317-2-9-1-4-6-5-6-6-6">5.3</tspan></text>
682 <rect
683 style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5.29752;stroke-opacity:1"
684 id="rect917-0-0-4-4-9-4-5-3-9-2-3-67-6"
685 width="982.23163"
686 height="45.000004"
687 x="1283.7023"
688 y="-436.77539"
689 ry="2.2558987" />
690 <text
691 xml:space="preserve"
692 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
693 x="1335.1118"
694 y="-418.39484"
695 id="text1185-3-55-4-0-0-0-1-1-6-4-3-53-0"><tspan
696 sodipodi:role="line"
697 x="1335.1118"
698 y="-418.39484"
699 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
700 id="tspan957-2-8-6-3-9-7-4-2-0-5-5-6">Wrynose</tspan><tspan
701 sodipodi:role="line"
702 x="1335.1118"
703 y="-400.39816"
704 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
705 id="tspan10317-2-9-1-4-6-5-6-6-6-2">6.0</tspan></text>
706 <g
707 id="g1591"
708 transform="translate(-516.59566,64.000598)">
709 <rect
710 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
711 id="rect917-0-0-4-4-9-9"
712 width="960.00012"
713 height="45.000004"
714 x="859.99994"
715 y="-64.999992"
716 ry="2.2558987" />
717 <text
718 xml:space="preserve"
719 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
720 x="928.49872"
721 y="-45.648258"
722 id="text1185-3-55-4-0-0-9"><tspan
723 sodipodi:role="line"
724 x="928.49872"
725 y="-45.648258"
726 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
727 id="tspan957-2-8-6-3-6">Kirkstone (LTS)</tspan><tspan
728 sodipodi:role="line"
729 x="928.49872"
730 y="-27.651579"
731 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
732 id="tspan10317-2-9-0">4.0</tspan></text>
733 </g>
734 <path
735 id="rect917-0-0-4-4-9-9-9"
736 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
737 d="m 805.70584,-220.99944 c -1.2753,0 -2.302,1.00609 -2.302,2.25586 v 40.48828 c 0,1.24977 1.0267,2.25586 2.302,2.25586 H 1780.747 c 1.2754,0 2.302,-1.00609 2.302,-2.25586 v -40.48828 c 0,-1.24977 -1.0266,-2.25586 -2.302,-2.25586 z" />
738 <text
739 xml:space="preserve"
740 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
741 x="873.90314"
742 y="-201.64772"
743 id="text1185-3-55-4-0-0-9-0"><tspan
744 sodipodi:role="line"
745 x="873.90314"
746 y="-201.64772"
747 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
748 id="tspan957-2-8-6-3-6-8">Scarthgap (LTS)</tspan><tspan
749 sodipodi:role="line"
750 x="873.90314"
751 y="-183.65105"
752 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
753 id="tspan10317-2-9-0-1">5.0</tspan></text>
754 <g
755 id="g1125-0"
756 transform="matrix(0.42240595,0,0,0.41654472,330.77064,-497.11721)"
757 style="stroke:none;stroke-width:2.38399">
758 <rect
759 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.76797;stroke-opacity:1"
760 id="rect1061-9"
761 width="452.00439"
762 height="192.0562"
763 x="11.609296"
764 y="276.44562"
765 ry="4.0176301" />
766 <g
767 id="g1109-1"
768 transform="translate(-2.7615661,-1.7576335)"
769 style="stroke:none;stroke-width:2.38399">
770 <path
771 id="path14-9"
772 class="st0"
773 d="m 439.74452,358.11274 c 0,4.22 -3.41,7.64 -7.64,7.64 -4.22,0 -7.63,-3.42 -7.63,-7.64 0,-4.22 3.41,-7.64 7.63,-7.64 4.23,0 7.64,3.42 7.64,7.64 v 0"
774 style="fill:#4a97d2;fill-opacity:1;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
775 <path
776 id="path16-6"
777 class="st1"
778 d="m 114.56452,324.94274 -11.13,-6.3 -22.409996,45.41 -23.9,-45.41 -11.27,6.3 28.41,53.38 c -0.21,0.51 -0.86,1.9 -1.95,4.22 -1.11,2.21 -2.25,4.41 -3.46,6.62 -2.11,3.81 -4.26,6.91 -6.46,9.32 -2.21,2.51 -4.46,4.51 -6.78,6.02 -2.3,1.51 -4.7,2.65 -7.21,3.46 -2.41,0.8 -4.87,1.45 -7.38,1.95 l 5.12,10.68 c 1.6,-0.21 3.75,-0.71 6.46,-1.51 2.81,-0.7 5.86,-2.06 9.17,-4.06 3.3,-2 6.67,-4.86 10.07,-8.57 3.52,-3.71 6.78,-8.62 9.78,-14.73 l 32.939996,-66.78"
779 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
780 <path
781 id="path18-2"
782 class="st1"
783 d="m 175.39452,358.18274 c 0,3.51 -0.6,6.76 -1.81,9.78 -1.21,3 -2.86,5.62 -4.95,7.81 -2.01,2.11 -4.41,3.81 -7.22,5.12 -2.71,1.19 -5.67,1.8 -8.87,1.8 -3.21,0 -6.22,-0.6 -9.02,-1.8 -2.81,-1.31 -5.27,-3.01 -7.38,-5.12 -2,-2.19 -3.6,-4.81 -4.81,-7.81 -1.21,-3.01 -1.81,-6.27 -1.81,-9.78 0,-3.51 0.6,-6.76 1.81,-9.77 1.21,-3 2.81,-5.61 4.81,-7.82 2.11,-2.21 4.57,-3.92 7.38,-5.11 2.8,-1.32 5.81,-1.97 9.02,-1.97 3.21,0 6.16,0.65 8.87,1.97 2.81,1.19 5.21,2.9 7.22,5.11 2.1,2.21 3.75,4.81 4.95,7.82 1.2,3.01 1.81,6.26 1.81,9.77 m 13.98,0 c 0,-5.21 -0.95,-10.08 -2.86,-14.59 -1.81,-4.51 -4.36,-8.42 -7.67,-11.73 -3.32,-3.3 -7.22,-5.86 -11.73,-7.67 -4.51,-1.9 -9.38,-2.86 -14.59,-2.86 -5.21,0 -10.08,0.95 -14.59,2.86 -4.51,1.81 -8.43,4.36 -11.73,7.67 -3.3,3.31 -5.92,7.22 -7.82,11.73 -1.9,4.51 -2.86,9.38 -2.86,14.59 0,5.21 0.95,10.08 2.86,14.59 1.9,4.41 4.52,8.27 7.82,11.57 3.3,3.32 7.22,5.92 11.73,7.82 4.51,1.81 9.38,2.71 14.59,2.71 5.21,0 10.08,-0.9 14.59,-2.71 4.51,-1.91 8.41,-4.51 11.73,-7.82 3.3,-3.3 5.86,-7.16 7.67,-11.57 1.91,-4.51 2.86,-9.38 2.86,-14.59"
784 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
785 <path
786 id="path20-5"
787 class="st1"
788 d="m 373.22452,358.18274 c 0,3.51 -0.6,6.76 -1.81,9.78 -1.21,3 -2.86,5.62 -4.97,7.81 -2,2.11 -4.4,3.81 -7.21,5.12 -2.71,1.19 -5.67,1.8 -8.87,1.8 -3.21,0 -6.22,-0.6 -9.03,-1.8 -2.8,-1.31 -5.26,-3.01 -7.37,-5.12 -2,-2.19 -3.61,-4.81 -4.81,-7.81 -1.21,-3.01 -1.81,-6.27 -1.81,-9.78 0,-3.51 0.6,-6.76 1.81,-9.77 1.21,-3 2.81,-5.61 4.81,-7.82 2.11,-2.21 4.57,-3.92 7.37,-5.11 2.81,-1.32 5.82,-1.97 9.03,-1.97 3.21,0 6.16,0.65 8.87,1.97 2.81,1.19 5.21,2.9 7.21,5.11 2.11,2.21 3.76,4.81 4.97,7.82 1.21,3.01 1.81,6.26 1.81,9.77 m 13.98,0 c 0,-5.21 -0.95,-10.08 -2.86,-14.59 -1.81,-4.51 -4.36,-8.42 -7.67,-11.73 -3.32,-3.3 -7.22,-5.86 -11.73,-7.67 -4.51,-1.9 -9.38,-2.86 -14.59,-2.86 -5.22,0 -10.08,0.95 -14.59,2.86 -4.51,1.81 -8.43,4.36 -11.73,7.67 -3.3,3.31 -5.92,7.22 -7.82,11.73 -1.9,4.51 -2.86,9.38 -2.86,14.59 0,5.21 0.95,10.08 2.86,14.59 1.9,4.41 4.52,8.27 7.82,11.57 3.3,3.32 7.22,5.92 11.73,7.82 4.51,1.81 9.37,2.71 14.59,2.71 5.21,0 10.08,-0.9 14.59,-2.71 4.51,-1.91 8.41,-4.51 11.73,-7.82 3.3,-3.3 5.86,-7.16 7.67,-11.57 1.91,-4.51 2.86,-9.38 2.86,-14.59"
789 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
790 <path
791 id="path22-4"
792 class="st1"
793 d="m 288.05452,298.59274 -13.39,7.52 v 16.45 h -36.21 c -26.15,0 -41.9,12.74 -41.9,35.95 0,36.04 37.55,42.84 64.25,29.96 l -5.63,-10.92 c -21.13,9.23 -44.53,5.3 -44.53,-19.28 0,-15.86 8.26,-24.54 27.49,-24.54 h 36.54 v 43.82 c 0,19.37 22.19,19.81 35.95,11.86 l -5.29,-10.45 c -8.85,4.48 -17.26,5.06 -17.26,-3.53 v -41.7 h 18.32 v -11.17 h -18.32 l -0.02,-23.97 v 0"
794 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
795 <path
796 id="path24-4"
797 class="st1"
798 d="m 136.79452,428.30274 h 3.35 c 1.69,-0.01 3.34,1.19 3.34,2.9 0,2.87 -3.23,3.3 -3.23,3.3 l -3.46,0.02 z m -4.84,-4.1 v 25.3 h 4.83 l 0.06,-10.67 c 8.62,0.54 11.84,-2.46 11.84,-7.75 0,-4.75 -4.26,-6.88 -8.34,-6.88 h -8.39 v 0"
799 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
800 <path
801 id="path26-9"
802 class="st1"
803 d="m 224.38452,436.87274 c 0,1.23 -0.23,2.39 -0.69,3.46 -0.42,1.04 -1.02,1.95 -1.81,2.74 -0.78,0.78 -1.7,1.4 -2.75,1.86 -1.04,0.42 -2.17,0.64 -3.38,0.64 -1.22,0 -2.35,-0.22 -3.39,-0.64 -1.05,-0.46 -1.96,-1.07 -2.75,-1.86 -0.76,-0.78 -1.36,-1.7 -1.81,-2.74 -0.46,-1.07 -0.69,-2.23 -0.69,-3.46 0,-1.23 0.23,-2.37 0.69,-3.42 0.45,-1.06 1.05,-1.99 1.81,-2.77 0.78,-0.78 1.7,-1.39 2.75,-1.82 1.04,-0.45 2.17,-0.67 3.39,-0.67 1.21,0 2.34,0.23 3.38,0.67 1.05,0.43 1.96,1.04 2.75,1.82 0.78,0.78 1.39,1.71 1.81,2.77 0.46,1.05 0.69,2.19 0.69,3.42 m 4.9,0 c 0,-1.81 -0.35,-3.5 -1.06,-5.06 -0.69,-1.59 -1.65,-2.97 -2.89,-4.12 -1.21,-1.17 -2.64,-2.09 -4.3,-2.75 -1.64,-0.69 -3.41,-1.04 -5.3,-1.04 -1.9,0 -3.69,0.35 -5.35,1.04 -1.64,0.66 -3.06,1.58 -4.27,2.75 -1.22,1.16 -2.17,2.53 -2.89,4.12 -0.69,1.57 -1.03,3.25 -1.03,5.06 0,1.83 0.34,3.53 1.03,5.1 0.72,1.57 1.68,2.94 2.89,4.12 1.21,1.17 2.63,2.09 4.27,2.75 1.66,0.66 3.45,1 5.35,1 1.89,0 3.67,-0.34 5.3,-1 1.66,-0.66 3.1,-1.58 4.3,-2.75 1.24,-1.18 2.21,-2.55 2.89,-4.12 0.71,-1.56 1.06,-3.26 1.06,-5.1"
804 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
805 <path
806 id="path28-9"
807 class="st1"
808 d="m 249.02452,424.25274 v 19.18 c 0,0.77 -0.57,1.63 -1.51,1.65 l -1.51,0.06 0.08,4.7 1.41,0.02 c 4.73,0.07 6.36,-4.37 6.36,-6.45 v -19.13"
809 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
810 <path
811 id="path30-3"
812 class="st1"
813 d="m 290.20452,424.19274 h -16.13 v 25.22 h 16.2 l -0.07,-4.06 h -11.28 v -6.58 h 9.44 v -4.06 h -9.44 v -6.38 h 11.21 l 0.07,-4.14"
814 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
815 <path
816 id="path32-6"
817 class="st1"
818 d="m 327.39452,430.24274 c -8.26,-4.53 -16.39,-1.78 -16.39,6.52 0,6.69 6.43,11.84 17,6.31 l 1.53,4.13 c -10.15,5.58 -23.51,1.6 -23.51,-10.44 0,-10.91 11.85,-16.59 23.36,-10.61 l -1.99,4.09"
819 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
820 <path
821 id="path34-0"
822 class="st1"
823 d="m 366.07452,424.19274 0.01,4.13 h -8.05 v 21.16 h -4.85 v -21.15 h -7.73 l 0.11,-4.13 h 20.51"
824 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
825 <path
826 id="path36-5"
827 class="st1"
828 d="m 172.67452,428.30274 h 3.35 c 1.69,-0.01 3.34,1.19 3.34,2.9 0,2.87 -3.23,3.3 -3.23,3.3 l -3.46,0.02 z m -4.82,-4.1 v 25.3 h 4.82 v -10.89 h 3.2 l 5.59,10.89 h 5.5 l -6.67,-12.2 c 2.64,-1.18 4.01,-3.26 4.01,-6.22 0,-4.94 -4.33,-6.88 -9.09,-6.88 h -7.36 v 0"
829 style="fill:#ffffff;stroke:none;stroke-width:0.238399;stroke-opacity:1" />
830 </g>
831 </g>
832 <text
833 xml:space="preserve"
834 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
835 x="313.46567"
836 y="412.9321"
837 id="text3781"><tspan
838 sodipodi:role="line"
839 id="tspan3779"
840 x="313.46567"
841 y="412.9321" /></text>
842 <text
843 xml:space="preserve"
844 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
845 x="683.00983"
846 y="94.212761"
847 id="text1185-9-7-1-1"><tspan
848 sodipodi:role="line"
849 x="683.00983"
850 y="94.212761"
851 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
852 id="tspan31345">Oct.</tspan><tspan
853 sodipodi:role="line"
854 x="683.00983"
855 y="112.20944"
856 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
857 id="tspan49906">2023</tspan></text>
858 <text
859 xml:space="preserve"
860 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
861 x="922.79474"
862 y="93.861046"
863 id="text1185-9-7-1-1-89"><tspan
864 sodipodi:role="line"
865 x="922.79474"
866 y="93.861046"
867 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
868 id="tspan31345-7">Oct.</tspan><tspan
869 sodipodi:role="line"
870 x="922.79474"
871 y="111.85773"
872 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
873 id="tspan49906-76">2024</tspan></text>
874 <text
875 xml:space="preserve"
876 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
877 x="1162.7139"
878 y="94.58416"
879 id="text1185-9-7-1-1-89-6"><tspan
880 sodipodi:role="line"
881 x="1162.7139"
882 y="94.58416"
883 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
884 id="tspan31345-7-8">Oct.</tspan><tspan
885 sodipodi:role="line"
886 x="1162.7139"
887 y="112.58084"
888 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
889 id="tspan49906-76-0">2025</tspan></text>
890 <text
891 xml:space="preserve"
892 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
893 x="442.92441"
894 y="94.678825"
895 id="text1185-9-7-1-1-0-7"><tspan
896 sodipodi:role="line"
897 x="442.92441"
898 y="94.678825"
899 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
900 id="tspan31345-42-7">Oct.</tspan><tspan
901 sodipodi:role="line"
902 x="442.92441"
903 y="112.67551"
904 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
905 id="tspan49906-9-6">2022</tspan></text>
906 <text
907 xml:space="preserve"
908 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
909 x="324.32913"
910 y="94.076042"
911 id="text1185-9-7-1-1-8-1"><tspan
912 sodipodi:role="line"
913 x="324.32913"
914 y="94.076042"
915 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
916 id="tspan31345-4-0">Apr</tspan><tspan
917 sodipodi:role="line"
918 x="324.32913"
919 y="112.07272"
920 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
921 id="tspan49906-7-3">2022</tspan></text>
922 <text
923 xml:space="preserve"
924 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
925 x="805.2652"
926 y="94.076042"
927 id="text1185-9-7-1-1-8-1-0"><tspan
928 sodipodi:role="line"
929 x="805.2652"
930 y="94.076042"
931 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
932 id="tspan31345-4-0-4">Apr.</tspan><tspan
933 sodipodi:role="line"
934 x="805.2652"
935 y="112.07272"
936 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
937 id="tspan49906-7-3-8">2024</tspan></text>
938 <text
939 xml:space="preserve"
940 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
941 x="1045.2207"
942 y="93.670372"
943 id="text1185-9-7-1-1-8-1-0-4"><tspan
944 sodipodi:role="line"
945 x="1045.2207"
946 y="93.670372"
947 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
948 id="tspan31345-4-0-4-81">Apr.</tspan><tspan
949 sodipodi:role="line"
950 x="1045.2207"
951 y="111.66705"
952 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
953 id="tspan49906-7-3-8-2">2025</tspan></text>
954 <text
955 xml:space="preserve"
956 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
957 x="1285.5521"
958 y="94.263939"
959 id="text1185-9-7-1-1-8-1-0-4-2"><tspan
960 sodipodi:role="line"
961 x="1285.5521"
962 y="94.263939"
963 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
964 id="tspan31345-4-0-4-81-5">Apr.</tspan><tspan
965 sodipodi:role="line"
966 x="1285.5521"
967 y="112.26062"
968 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
969 id="tspan49906-7-3-8-2-8">2026</tspan></text>
970 <text
971 xml:space="preserve"
972 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
973 x="564.85016"
974 y="94.076042"
975 id="text1185-9-7-1-1-8-1-0-2"><tspan
976 sodipodi:role="line"
977 x="564.85016"
978 y="94.076042"
979 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
980 id="tspan31345-4-0-4-8">Apr.</tspan><tspan
981 sodipodi:role="line"
982 x="564.85016"
983 y="112.07272"
984 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
985 id="tspan49906-7-3-8-3">2023</tspan></text>
986 <text
987 xml:space="preserve"
988 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
989 x="-16.290483"
990 y="345.7359"
991 id="text3116"><tspan
992 sodipodi:role="line"
993 id="tspan3114"
994 x="-16.290483"
995 y="345.7359" /></text>
996 <path
997 id="path29430"
998 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99503;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
999 d="M 307.54809,63.999718 H 2277.72 Z" />
1000 <path
1001 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1002 d="m 323.40434,64.000618 v 9.99995 0"
1003 id="path29548-5-1-3-6" />
1004 <path
1005 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1006 d="m 443.40434,64.000618 v 9.99999 0"
1007 id="path29548-5-1-3-6-3" />
1008 <path
1009 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1010 d="m 563.40434,64.000618 v 9.99999 0"
1011 id="path29548-5-1-3-6-3-1" />
1012 <path
1013 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1014 d="m 343.40434,64.000568 v 5.00004 0"
1015 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2"
1016 inkscape:transform-center-x="14.782001"
1017 inkscape:transform-center-y="-0.085282837" />
1018 <path
1019 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1020 d="m 363.40434,64.000568 v 5.00004 0"
1021 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2"
1022 inkscape:transform-center-x="14.782001"
1023 inkscape:transform-center-y="-0.085282837" />
1024 <path
1025 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1026 d="m 383.12818,64.000568 v 5.00004 0"
1027 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7"
1028 inkscape:transform-center-x="14.782001"
1029 inkscape:transform-center-y="-0.085282837" />
1030 <path
1031 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1032 d="m 403.40434,64.000568 v 5.00004 0"
1033 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6"
1034 inkscape:transform-center-x="14.782001"
1035 inkscape:transform-center-y="-0.085282837" />
1036 <path
1037 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1038 d="m 423.40434,64.000568 v 5.00004 0"
1039 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1"
1040 inkscape:transform-center-x="14.782001"
1041 inkscape:transform-center-y="-0.085282837" />
1042 <path
1043 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1044 d="m 463.40434,64.000568 v 5.00004 0"
1045 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9"
1046 inkscape:transform-center-x="14.782001"
1047 inkscape:transform-center-y="-0.085282837" />
1048 <path
1049 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1050 d="m 483.40434,64.000568 v 5.00004 0"
1051 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9"
1052 inkscape:transform-center-x="14.782001"
1053 inkscape:transform-center-y="-0.085282837" />
1054 <path
1055 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1056 d="m 503.40434,64.000568 v 5.00004 0"
1057 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1"
1058 inkscape:transform-center-x="14.782001"
1059 inkscape:transform-center-y="-0.085282837" />
1060 <path
1061 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1062 d="m 523.40434,64.000568 v 5.00004 0"
1063 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4"
1064 inkscape:transform-center-x="14.782001"
1065 inkscape:transform-center-y="-0.085282837" />
1066 <path
1067 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1068 d="m 543.12594,64.000568 v 5.00004 0"
1069 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9"
1070 inkscape:transform-center-x="-14.78205"
1071 inkscape:transform-center-y="-0.085282837" />
1072 <path
1073 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1074 d="m 583.40434,64.000568 v 5.00004 0"
1075 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0"
1076 inkscape:transform-center-x="14.782001"
1077 inkscape:transform-center-y="-0.085282837" />
1078 <path
1079 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1080 d="m 603.40434,64.000568 v 5.00004 0"
1081 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7"
1082 inkscape:transform-center-x="14.782001"
1083 inkscape:transform-center-y="-0.085282837" />
1084 <path
1085 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1086 d="m 623.40434,64.000568 v 5.00004 0"
1087 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5"
1088 inkscape:transform-center-x="14.782001"
1089 inkscape:transform-center-y="-0.085282837" />
1090 <path
1091 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1092 d="m 643.40434,64.000568 v 5.00004 0"
1093 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8"
1094 inkscape:transform-center-x="14.782001"
1095 inkscape:transform-center-y="-0.085282837" />
1096 <path
1097 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1098 d="m 663.12594,64.000568 v 5.00004 0"
1099 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7"
1100 inkscape:transform-center-x="-14.78205"
1101 inkscape:transform-center-y="-0.085282837" />
1102 <path
1103 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1104 d="m 803.40434,64.000558 v 10 0"
1105 id="path29548-5-1-3-6-3-1-0-8" />
1106 <g
1107 id="g1267"
1108 transform="translate(-516.59566,-155.99941)">
1109 <path
1110 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1111 d="m 1200,220.00002 v 9.99999 0"
1112 id="path29548-5-1-3-6-3-1-0" />
1113 <path
1114 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1115 d="m 1220,219.99997 v 5.00004 0"
1116 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5"
1117 inkscape:transform-center-x="14.782001"
1118 inkscape:transform-center-y="-0.085282837" />
1119 <path
1120 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1121 d="m 1240,219.99997 v 5.00004 0"
1122 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5"
1123 inkscape:transform-center-x="14.782001"
1124 inkscape:transform-center-y="-0.085282837" />
1125 <path
1126 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1127 d="m 1260,219.99997 v 5.00004 0"
1128 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2"
1129 inkscape:transform-center-x="14.782001"
1130 inkscape:transform-center-y="-0.085282837" />
1131 <path
1132 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1133 d="m 1280,219.99997 v 5.00004 0"
1134 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9"
1135 inkscape:transform-center-x="14.782001"
1136 inkscape:transform-center-y="-0.085282837" />
1137 <path
1138 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1139 d="m 1299.7216,219.99997 v 5.00004 0"
1140 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0"
1141 inkscape:transform-center-x="-14.78205"
1142 inkscape:transform-center-y="-0.085282837" />
1143 </g>
1144 <g
1145 id="g1267-4"
1146 transform="translate(-276.59566,-155.99945)">
1147 <path
1148 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1149 d="m 1200,220.00002 v 9.99999 0"
1150 id="path29548-5-1-3-6-3-1-0-3" />
1151 <path
1152 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1153 d="m 1220,219.99997 v 5.00004 0"
1154 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0"
1155 inkscape:transform-center-x="14.782001"
1156 inkscape:transform-center-y="-0.085282837" />
1157 <path
1158 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1159 d="m 1240,219.99997 v 5.00004 0"
1160 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3"
1161 inkscape:transform-center-x="14.782001"
1162 inkscape:transform-center-y="-0.085282837" />
1163 <path
1164 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1165 d="m 1260,219.99997 v 5.00004 0"
1166 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0"
1167 inkscape:transform-center-x="14.782001"
1168 inkscape:transform-center-y="-0.085282837" />
1169 <path
1170 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1171 d="m 1280,219.99997 v 5.00004 0"
1172 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9"
1173 inkscape:transform-center-x="14.782001"
1174 inkscape:transform-center-y="-0.085282837" />
1175 <path
1176 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1177 d="m 1299.7216,219.99997 v 5.00004 0"
1178 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2"
1179 inkscape:transform-center-x="-14.78205"
1180 inkscape:transform-center-y="-0.085282837" />
1181 </g>
1182 <g
1183 id="g1267-4-5"
1184 transform="translate(-36.595659,-155.99946)">
1185 <path
1186 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1187 d="m 1200,220.00002 v 9.99999 0"
1188 id="path29548-5-1-3-6-3-1-0-3-4" />
1189 <path
1190 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1191 d="m 1220,219.99997 v 5.00004 0"
1192 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0"
1193 inkscape:transform-center-x="14.782001"
1194 inkscape:transform-center-y="-0.085282837" />
1195 <path
1196 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1197 d="m 1240,219.99997 v 5.00004 0"
1198 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5"
1199 inkscape:transform-center-x="14.782001"
1200 inkscape:transform-center-y="-0.085282837" />
1201 <path
1202 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1203 d="m 1260,219.99997 v 5.00004 0"
1204 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9"
1205 inkscape:transform-center-x="14.782001"
1206 inkscape:transform-center-y="-0.085282837" />
1207 <path
1208 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1209 d="m 1280,219.99997 v 5.00004 0"
1210 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4"
1211 inkscape:transform-center-x="14.782001"
1212 inkscape:transform-center-y="-0.085282837" />
1213 <path
1214 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1215 d="m 1299.7216,219.99997 v 5.00004 0"
1216 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6"
1217 inkscape:transform-center-x="-14.78205"
1218 inkscape:transform-center-y="-0.085282837" />
1219 </g>
1220 <g
1221 id="g1267-4-5-22"
1222 transform="translate(83.404341,-155.99945)">
1223 <path
1224 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1225 d="m 1200,220.00002 v 9.99999 0"
1226 id="path29548-5-1-3-6-3-1-0-3-4-0" />
1227 <path
1228 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1229 d="m 1220,219.99997 v 5.00004 0"
1230 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-55"
1231 inkscape:transform-center-x="14.782001"
1232 inkscape:transform-center-y="-0.085282837" />
1233 <path
1234 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1235 d="m 1240,219.99997 v 5.00004 0"
1236 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-2"
1237 inkscape:transform-center-x="14.782001"
1238 inkscape:transform-center-y="-0.085282837" />
1239 <path
1240 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1241 d="m 1260,219.99997 v 5.00004 0"
1242 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-90"
1243 inkscape:transform-center-x="14.782001"
1244 inkscape:transform-center-y="-0.085282837" />
1245 <path
1246 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1247 d="m 1280,219.99997 v 5.00004 0"
1248 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-2"
1249 inkscape:transform-center-x="14.782001"
1250 inkscape:transform-center-y="-0.085282837" />
1251 <path
1252 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1253 d="m 1299.7216,219.99997 v 5.00004 0"
1254 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-8"
1255 inkscape:transform-center-x="-14.78205"
1256 inkscape:transform-center-y="-0.085282837" />
1257 </g>
1258 <g
1259 id="g1267-4-5-9"
1260 transform="translate(-156.59566,-155.99945)">
1261 <path
1262 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1263 d="m 1200,220.00002 v 9.99999 0"
1264 id="path29548-5-1-3-6-3-1-0-3-4-2" />
1265 <path
1266 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1267 d="m 1220,219.99997 v 5.00004 0"
1268 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-2"
1269 inkscape:transform-center-x="14.782001"
1270 inkscape:transform-center-y="-0.085282837" />
1271 <path
1272 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1273 d="m 1240,219.99997 v 5.00004 0"
1274 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-4"
1275 inkscape:transform-center-x="14.782001"
1276 inkscape:transform-center-y="-0.085282837" />
1277 <path
1278 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1279 d="m 1260,219.99997 v 5.00004 0"
1280 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-7"
1281 inkscape:transform-center-x="14.782001"
1282 inkscape:transform-center-y="-0.085282837" />
1283 <path
1284 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1285 d="m 1280,219.99997 v 5.00004 0"
1286 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-7"
1287 inkscape:transform-center-x="14.782001"
1288 inkscape:transform-center-y="-0.085282837" />
1289 <path
1290 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1291 d="m 1299.7216,219.99997 v 5.00004 0"
1292 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-5"
1293 inkscape:transform-center-x="-14.78205"
1294 inkscape:transform-center-y="-0.085282837" />
1295 </g>
1296 <path
1297 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1298 d="m 1283.4043,64.000568 v 9.99999 0"
1299 id="path29548-5-1-3-6-3-1-0-3-4-2-0" />
1300 <path
1301 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1302 d="m 823.40434,64.000568 v 5.00004 0"
1303 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-3"
1304 inkscape:transform-center-x="14.782001"
1305 inkscape:transform-center-y="-0.085282837" />
1306 <path
1307 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1308 d="m 843.40434,64.000568 v 5.00004 0"
1309 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-0"
1310 inkscape:transform-center-x="14.782001"
1311 inkscape:transform-center-y="-0.085282837" />
1312 <path
1313 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1314 d="m 863.40434,64.000568 v 5.00004 0"
1315 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-3"
1316 inkscape:transform-center-x="14.782001"
1317 inkscape:transform-center-y="-0.085282837" />
1318 <path
1319 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1320 d="m 883.40434,64.000568 v 5.00004 0"
1321 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-0"
1322 inkscape:transform-center-x="14.782001"
1323 inkscape:transform-center-y="-0.085282837" />
1324 <path
1325 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1326 d="m 903.12594,64.000568 v 5.00004 0"
1327 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-9"
1328 inkscape:transform-center-x="-14.78205"
1329 inkscape:transform-center-y="-0.085282837" />
1330 <text
1331 xml:space="preserve"
1332 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1333 x="1402.7948"
1334 y="93.861046"
1335 id="text1185-9-7-1-1-89-62"><tspan
1336 sodipodi:role="line"
1337 x="1402.7948"
1338 y="93.861046"
1339 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1340 id="tspan31345-7-6">Oct.</tspan><tspan
1341 sodipodi:role="line"
1342 x="1402.7948"
1343 y="111.85773"
1344 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1345 id="tspan49906-76-7">2026</tspan></text>
1346 <text
1347 xml:space="preserve"
1348 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1349 x="1642.7137"
1350 y="94.58416"
1351 id="text1185-9-7-1-1-89-6-5"><tspan
1352 sodipodi:role="line"
1353 x="1642.7137"
1354 y="94.58416"
1355 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1356 id="tspan31345-7-8-6">Oct.</tspan><tspan
1357 sodipodi:role="line"
1358 x="1642.7137"
1359 y="112.58084"
1360 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1361 id="tspan49906-76-0-9">2027</tspan></text>
1362 <text
1363 xml:space="preserve"
1364 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1365 x="1525.2207"
1366 y="93.670372"
1367 id="text1185-9-7-1-1-8-1-0-4-8"><tspan
1368 sodipodi:role="line"
1369 x="1525.2207"
1370 y="93.670372"
1371 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1372 id="tspan31345-4-0-4-81-7">Apr.</tspan><tspan
1373 sodipodi:role="line"
1374 x="1525.2207"
1375 y="111.66705"
1376 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1377 id="tspan49906-7-3-8-2-2">2027</tspan></text>
1378 <text
1379 xml:space="preserve"
1380 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1381 x="1765.5521"
1382 y="94.263939"
1383 id="text1185-9-7-1-1-8-1-0-4-2-8"><tspan
1384 sodipodi:role="line"
1385 x="1765.5521"
1386 y="94.263939"
1387 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1388 id="tspan31345-4-0-4-81-5-2">Apr.</tspan><tspan
1389 sodipodi:role="line"
1390 x="1765.5521"
1391 y="112.26062"
1392 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1393 id="tspan49906-7-3-8-2-8-9">2028</tspan></text>
1394 <g
1395 id="g1267-4-9"
1396 transform="translate(203.40434,-155.99944)">
1397 <path
1398 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1399 d="m 1200,220.00002 v 9.99999 0"
1400 id="path29548-5-1-3-6-3-1-0-3-6" />
1401 <path
1402 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1403 d="m 1220,219.99997 v 5.00004 0"
1404 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-02"
1405 inkscape:transform-center-x="14.782001"
1406 inkscape:transform-center-y="-0.085282837" />
1407 <path
1408 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1409 d="m 1240,219.99997 v 5.00004 0"
1410 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-7"
1411 inkscape:transform-center-x="14.782001"
1412 inkscape:transform-center-y="-0.085282837" />
1413 <path
1414 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1415 d="m 1260,219.99997 v 5.00004 0"
1416 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-6"
1417 inkscape:transform-center-x="14.782001"
1418 inkscape:transform-center-y="-0.085282837" />
1419 <path
1420 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1421 d="m 1280,219.99997 v 5.00004 0"
1422 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-1"
1423 inkscape:transform-center-x="14.782001"
1424 inkscape:transform-center-y="-0.085282837" />
1425 <path
1426 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1427 d="m 1299.7216,219.99997 v 5.00004 0"
1428 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-3"
1429 inkscape:transform-center-x="-14.78205"
1430 inkscape:transform-center-y="-0.085282837" />
1431 </g>
1432 <g
1433 id="g1267-4-5-2"
1434 transform="translate(443.40434,-155.99945)">
1435 <path
1436 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1437 d="m 1200,220.00002 v 9.99999 0"
1438 id="path29548-5-1-3-6-3-1-0-3-4-1" />
1439 <path
1440 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1441 d="m 1220,219.99997 v 5.00004 0"
1442 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5"
1443 inkscape:transform-center-x="14.782001"
1444 inkscape:transform-center-y="-0.085282837" />
1445 <path
1446 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1447 d="m 1240,219.99997 v 5.00004 0"
1448 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9"
1449 inkscape:transform-center-x="14.782001"
1450 inkscape:transform-center-y="-0.085282837" />
1451 <path
1452 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1453 d="m 1260,219.99997 v 5.00004 0"
1454 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9"
1455 inkscape:transform-center-x="14.782001"
1456 inkscape:transform-center-y="-0.085282837" />
1457 <path
1458 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1459 d="m 1280,219.99997 v 5.00004 0"
1460 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1"
1461 inkscape:transform-center-x="14.782001"
1462 inkscape:transform-center-y="-0.085282837" />
1463 <path
1464 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1465 d="m 1299.7216,219.99997 v 5.00004 0"
1466 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4"
1467 inkscape:transform-center-x="-14.78205"
1468 inkscape:transform-center-y="-0.085282837" />
1469 </g>
1470 <g
1471 id="g1267-4-5-9-9"
1472 transform="translate(323.40434,-155.99944)">
1473 <path
1474 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1475 d="m 1200,220.00002 v 9.99999 0"
1476 id="path29548-5-1-3-6-3-1-0-3-4-2-1" />
1477 <path
1478 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1479 d="m 1220,219.99997 v 5.00004 0"
1480 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-2-0"
1481 inkscape:transform-center-x="14.782001"
1482 inkscape:transform-center-y="-0.085282837" />
1483 <path
1484 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1485 d="m 1240,219.99997 v 5.00004 0"
1486 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-4-7"
1487 inkscape:transform-center-x="14.782001"
1488 inkscape:transform-center-y="-0.085282837" />
1489 <path
1490 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1491 d="m 1260,219.99997 v 5.00004 0"
1492 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-7-5"
1493 inkscape:transform-center-x="14.782001"
1494 inkscape:transform-center-y="-0.085282837" />
1495 <path
1496 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1497 d="m 1280,219.99997 v 5.00004 0"
1498 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-7-8"
1499 inkscape:transform-center-x="14.782001"
1500 inkscape:transform-center-y="-0.085282837" />
1501 <path
1502 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1503 d="m 1299.7216,219.99997 v 5.00004 0"
1504 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-5-7"
1505 inkscape:transform-center-x="-14.78205"
1506 inkscape:transform-center-y="-0.085282837" />
1507 </g>
1508 <path
1509 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1510 d="m 1763.4043,64.000578 v 9.99999 0"
1511 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0" />
1512 <text
1513 xml:space="preserve"
1514 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1515 x="1885.6029"
1516 y="94.285194"
1517 id="text1185-9-7-1-1-8-1-0-4-2-8-2"><tspan
1518 sodipodi:role="line"
1519 x="1885.6029"
1520 y="94.285194"
1521 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1522 id="tspan31345-4-0-4-81-5-2-8">Oct.</tspan><tspan
1523 sodipodi:role="line"
1524 x="1885.6029"
1525 y="112.28188"
1526 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1527 id="tspan49906-7-3-8-2-8-9-9">2028</tspan></text>
1528 <g
1529 id="g1267-4-5-2-7"
1530 transform="translate(563.45518,-155.9782)">
1531 <path
1532 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1533 d="m 1200,220.00002 v 9.99999 0"
1534 id="path29548-5-1-3-6-3-1-0-3-4-1-3" />
1535 <path
1536 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1537 d="m 1220,219.99997 v 5.00004 0"
1538 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6"
1539 inkscape:transform-center-x="14.782001"
1540 inkscape:transform-center-y="-0.085282837" />
1541 <path
1542 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1543 d="m 1240,219.99997 v 5.00004 0"
1544 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1"
1545 inkscape:transform-center-x="14.782001"
1546 inkscape:transform-center-y="-0.085282837" />
1547 <path
1548 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1549 d="m 1260,219.99997 v 5.00004 0"
1550 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2"
1551 inkscape:transform-center-x="14.782001"
1552 inkscape:transform-center-y="-0.085282837" />
1553 <path
1554 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1555 d="m 1280,219.99997 v 5.00004 0"
1556 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9"
1557 inkscape:transform-center-x="14.782001"
1558 inkscape:transform-center-y="-0.085282837" />
1559 <path
1560 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1561 d="m 1299.7216,219.99997 v 5.00004 0"
1562 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3"
1563 inkscape:transform-center-x="-14.78205"
1564 inkscape:transform-center-y="-0.085282837" />
1565 </g>
1566 <path
1567 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1568 d="m 1883.4551,64.021829 v 9.99999 0"
1569 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1" />
1570 <text
1571 xml:space="preserve"
1572 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1573 x="2005.5908"
1574 y="94.339828"
1575 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4"><tspan
1576 sodipodi:role="line"
1577 x="2005.5908"
1578 y="94.339828"
1579 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1580 id="tspan31345-4-0-4-81-5-2-8-7">Apr.</tspan><tspan
1581 sodipodi:role="line"
1582 x="2005.5908"
1583 y="112.33651"
1584 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1585 id="tspan49906-7-3-8-2-8-9-9-8">2029</tspan></text>
1586 <g
1587 id="g1267-4-5-2-7-4"
1588 transform="translate(683.44312,-155.92356)">
1589 <path
1590 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1591 d="m 1200,220.00002 v 9.99999 0"
1592 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5" />
1593 <path
1594 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1595 d="m 1220,219.99997 v 5.00004 0"
1596 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0"
1597 inkscape:transform-center-x="14.782001"
1598 inkscape:transform-center-y="-0.085282837" />
1599 <path
1600 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1601 d="m 1240,219.99997 v 5.00004 0"
1602 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3"
1603 inkscape:transform-center-x="14.782001"
1604 inkscape:transform-center-y="-0.085282837" />
1605 <path
1606 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1607 d="m 1260,219.99997 v 5.00004 0"
1608 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6"
1609 inkscape:transform-center-x="14.782001"
1610 inkscape:transform-center-y="-0.085282837" />
1611 <path
1612 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1613 d="m 1280,219.99997 v 5.00004 0"
1614 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1"
1615 inkscape:transform-center-x="14.782001"
1616 inkscape:transform-center-y="-0.085282837" />
1617 <path
1618 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1619 d="m 1299.7216,219.99997 v 5.00004 0"
1620 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0"
1621 inkscape:transform-center-x="-14.78205"
1622 inkscape:transform-center-y="-0.085282837" />
1623 </g>
1624 <path
1625 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1626 d="m 2003.443,64.076464 v 9.99999 0"
1627 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6" />
1628 <text
1629 xml:space="preserve"
1630 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1631 x="2125.6079"
1632 y="94.692207"
1633 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4-2"><tspan
1634 sodipodi:role="line"
1635 x="2125.6079"
1636 y="94.692207"
1637 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1638 id="tspan31345-4-0-4-81-5-2-8-7-0">Oct.</tspan><tspan
1639 sodipodi:role="line"
1640 x="2125.6079"
1641 y="112.68889"
1642 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1643 id="tspan49906-7-3-8-2-8-9-9-8-6">2029</tspan></text>
1644 <g
1645 id="g1267-4-5-2-7-4-1"
1646 transform="translate(803.46019,-155.57118)">
1647 <path
1648 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1649 d="m 1200,220.00002 v 9.99999 0"
1650 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5" />
1651 <path
1652 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1653 d="m 1220,219.99997 v 5.00004 0"
1654 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5"
1655 inkscape:transform-center-x="14.782001"
1656 inkscape:transform-center-y="-0.085282837" />
1657 <path
1658 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1659 d="m 1240,219.99997 v 5.00004 0"
1660 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4"
1661 inkscape:transform-center-x="14.782001"
1662 inkscape:transform-center-y="-0.085282837" />
1663 <path
1664 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1665 d="m 1260,219.99997 v 5.00004 0"
1666 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7"
1667 inkscape:transform-center-x="14.782001"
1668 inkscape:transform-center-y="-0.085282837" />
1669 <path
1670 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1671 d="m 1280,219.99997 v 5.00004 0"
1672 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6"
1673 inkscape:transform-center-x="14.782001"
1674 inkscape:transform-center-y="-0.085282837" />
1675 <path
1676 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1677 d="m 1299.7216,219.99997 v 5.00004 0"
1678 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5"
1679 inkscape:transform-center-x="-14.78205"
1680 inkscape:transform-center-y="-0.085282837" />
1681 </g>
1682 <path
1683 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1684 d="m 2123.4601,64.428843 v 9.99999 0"
1685 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-6" />
1686 <path
1687 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1688 d="m 2123.3825,64.223284 v 9.99999 0"
1689 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-3" />
1690 <text
1691 xml:space="preserve"
1692 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1693 x="2245.5474"
1694 y="94.839027"
1695 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4-2-7"><tspan
1696 sodipodi:role="line"
1697 x="2245.5474"
1698 y="94.839027"
1699 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1700 id="tspan31345-4-0-4-81-5-2-8-7-0-4">Apr.</tspan><tspan
1701 sodipodi:role="line"
1702 x="2245.5474"
1703 y="112.83571"
1704 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1705 id="tspan49906-7-3-8-2-8-9-9-8-6-5">2030</tspan></text>
1706 <g
1707 id="g1267-4-5-2-7-4-1-2"
1708 transform="translate(923.39972,-155.42436)">
1709 <path
1710 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1711 d="m 1200,220.00002 v 9.99999 0"
1712 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5-5" />
1713 <path
1714 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1715 d="m 1220,219.99997 v 5.00004 0"
1716 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5-4"
1717 inkscape:transform-center-x="14.782001"
1718 inkscape:transform-center-y="-0.085282837" />
1719 <path
1720 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1721 d="m 1240,219.99997 v 5.00004 0"
1722 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4-7"
1723 inkscape:transform-center-x="14.782001"
1724 inkscape:transform-center-y="-0.085282837" />
1725 <path
1726 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1727 d="m 1260,219.99997 v 5.00004 0"
1728 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7-4"
1729 inkscape:transform-center-x="14.782001"
1730 inkscape:transform-center-y="-0.085282837" />
1731 <path
1732 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1733 d="m 1280,219.99997 v 5.00004 0"
1734 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6-4"
1735 inkscape:transform-center-x="14.782001"
1736 inkscape:transform-center-y="-0.085282837" />
1737 <path
1738 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1739 d="m 1299.7216,219.99997 v 5.00004 0"
1740 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5-3"
1741 inkscape:transform-center-x="-14.78205"
1742 inkscape:transform-center-y="-0.085282837" />
1743 </g>
1744 <g
1745 id="g1267-4-5-2-7-4-1-2-0"
1746 transform="translate(1043.3579,-155.33829)">
1747 <path
1748 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1749 d="m 1200,220.00002 v 9.99999 0"
1750 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5-5-6" />
1751 <path
1752 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1753 d="m 1220,219.99997 v 5.00004 0"
1754 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5-4-8"
1755 inkscape:transform-center-x="14.782001"
1756 inkscape:transform-center-y="-0.085282837" />
1757 <path
1758 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1759 d="m 1240,219.99997 v 5.00004 0"
1760 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4-7-9"
1761 inkscape:transform-center-x="14.782001"
1762 inkscape:transform-center-y="-0.085282837" />
1763 <path
1764 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1765 d="m 1260,219.99997 v 5.00004 0"
1766 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7-4-2"
1767 inkscape:transform-center-x="14.782001"
1768 inkscape:transform-center-y="-0.085282837" />
1769 <path
1770 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1771 d="m 1280,219.99997 v 5.00004 0"
1772 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6-4-6"
1773 inkscape:transform-center-x="14.782001"
1774 inkscape:transform-center-y="-0.085282837" />
1775 <path
1776 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1777 d="m 1299.7216,219.99997 v 5.00004 0"
1778 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5-3-6"
1779 inkscape:transform-center-x="-14.78205"
1780 inkscape:transform-center-y="-0.085282837" />
1781 </g>
1782 <path
1783 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1784 d="m 2243.3996,64.575663 v 9.99999 0"
1785 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-6-0" />
1786 <rect
1787 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.751473;stroke-opacity:1"
1788 id="rect917-0-0-4-4-9-4-5-3-9-2-36"
1789 width="38.418175"
1790 height="23.151052"
1791 x="2047.6135"
1792 y="-45.172161"
1793 ry="1.1605872" />
1794 <rect
1795 style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98878;stroke-dasharray:none;stroke-opacity:1"
1796 id="rect917-0-0-4-4-9-4-5-3-9-2-36-7"
1797 width="186.42949"
1798 height="110.40546"
1799 x="2036.5294"
1800 y="-77.753708"
1801 ry="5.5347452" />
1802 <rect
1803 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1804 id="rect917-0-0-4-4-9-4-5-3-9-2-6"
1805 width="21.197233"
1806 height="19.28739"
1807 x="2053.8164"
1808 y="-45.883858"
1809 ry="0.96689767" />
1810 <text
1811 xml:space="preserve"
1812 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1813 x="2132.4917"
1814 y="-57.687912"
1815 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5"><tspan
1816 sodipodi:role="line"
1817 x="2132.4917"
1818 y="-57.687912"
1819 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1820 id="tspan10317-2-9-1-4-6-5-6-6-5">Legend</tspan></text>
1821 <text
1822 xml:space="preserve"
1823 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1824 x="2098.0986"
1825 y="-31.899874"
1826 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2"><tspan
1827 sodipodi:role="line"
1828 x="2098.0986"
1829 y="-31.899874"
1830 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1831 id="tspan10317-2-9-1-4-6-5-6-6-5-9">Future</tspan></text>
1832 <rect
1833 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1834 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1"
1835 width="21.197233"
1836 height="19.28739"
1837 x="2053.8672"
1838 y="-21.756365"
1839 ry="0.96689767" />
1840 <text
1841 xml:space="preserve"
1842 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1843 x="2128.7158"
1844 y="-7.6722765"
1845 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2"><tspan
1846 sodipodi:role="line"
1847 x="2128.7158"
1848 y="-7.6722765"
1849 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1850 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7">Current (Apr. 25)</tspan></text>
1851 <text
1852 xml:space="preserve"
1853 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1854 x="2109.363"
1855 y="16.03771"
1856 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2-9"><tspan
1857 sodipodi:role="line"
1858 x="2109.363"
1859 y="16.03771"
1860 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
1861 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7-3">End-of-life</tspan></text>
1862 <rect
1863 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1864 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1-0"
1865 width="21.197233"
1866 height="19.28739"
1867 x="2054.0239"
1868 y="1.9667883"
1869 ry="0.96689767" />
1870 <rect
1871 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.85786;stroke-opacity:1"
1872 id="rect917-0-0-4-4-9-4-5-6"
1873 width="120.80748"
1874 height="45.000004"
1875 x="703.10553"
1876 y="-165.72791"
1877 ry="2.2558987" />
1878 <text
1879 xml:space="preserve"
1880 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1881 x="752.16809"
1882 y="-147.18787"
1883 id="text1185-3-55-4-0-0-0-1-2"><tspan
1884 sodipodi:role="line"
1885 x="752.16809"
1886 y="-147.18787"
1887 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
1888 id="tspan1">Nanbield</tspan><tspan
1889 sodipodi:role="line"
1890 x="752.16809"
1891 y="-129.19119"
1892 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
1893 id="tspan2">4.3</tspan></text>
1894 </g>
1895 <style
1896 type="text/css"
1897 id="style1021"> .st0{fill:#4A97D2;} .st1{fill:#333333;} </style>
1898</svg>
diff --git a/documentation/ref-manual/system-requirements.rst b/documentation/ref-manual/system-requirements.rst
index c8c1381cb9..fcefd6c7a0 100644
--- a/documentation/ref-manual/system-requirements.rst
+++ b/documentation/ref-manual/system-requirements.rst
@@ -4,7 +4,7 @@
4System Requirements 4System Requirements
5******************* 5*******************
6 6
7Welcome to the Yocto Project Reference Manual! This manual provides 7Welcome to the Yocto Project Reference Manual. This manual provides
8reference information for the current release of the Yocto Project, and 8reference information for the current release of the Yocto Project, and
9is most effectively used after you have an understanding of the basics 9is most effectively used after you have an understanding of the basics
10of the Yocto Project. The manual is neither meant to be read as a 10of the Yocto Project. The manual is neither meant to be read as a
@@ -29,46 +29,93 @@ and conceptual information in the :doc:`/overview-manual/index`.
29 For more information about the Yocto Project Documentation set, see 29 For more information about the Yocto Project Documentation set, see
30 the :ref:`ref-manual/resources:links and related documentation` section. 30 the :ref:`ref-manual/resources:links and related documentation` section.
31 31
32.. _detailed-supported-distros: 32Minimum Free Disk Space
33=======================
33 34
34Supported Linux Distributions 35To build an image such as ``core-image-sato`` for the ``qemux86-64`` machine,
35============================= 36you need a system with at least &MIN_DISK_SPACE; Gbytes of free disk space.
36 37However, much more disk space will be necessary to build more complex images,
37Currently, the Yocto Project is supported on the following 38to run multiple builds and to cache build artifacts, improving build efficiency.
38distributions:
39
40- Ubuntu 16.04 (LTS)
41
42- Ubuntu 18.04 (LTS)
43
44- Ubuntu 20.04
45
46- Fedora 30
47 39
48- Fedora 31 40If you have a shortage of disk space, see the ":doc:`/dev-manual/disk-space`"
41section of the Development Tasks Manual.
49 42
50- Fedora 32 43.. _system-requirements-minimum-ram:
51 44
52- CentOS 7.x 45Minimum System RAM
46==================
53 47
54- CentOS 8.x 48You will manage to build an image such as ``core-image-sato`` for the
49``qemux86-64`` machine with as little as &MIN_RAM; Gbytes of RAM on an old
50system with 4 CPU cores, but your builds will be much faster on a system with
51as much RAM and as many CPU cores as possible.
55 52
56- Debian GNU/Linux 8.x (Jessie) 53.. _system-requirements-supported-distros:
57 54
58- Debian GNU/Linux 9.x (Stretch) 55Supported Linux Distributions
59 56=============================
60- Debian GNU/Linux 10.x (Buster)
61
62- OpenSUSE Leap 15.1
63 57
58Currently, the &DISTRO; release ("&DISTRO_NAME;") of the Yocto Project is
59supported on the following distributions:
60
61..
62 Can be generated with yocto-autobuilder-helper's scripts/yocto-supported-distros.
63 yocto-supported-distros --release master --config yocto-autobuilder2/config.py --output-format docs
64
65- AlmaLinux 8
66- AlmaLinux 9
67- CentOS Stream 9
68- Debian GNU/Linux 11 (Bullseye)
69- Debian GNU/Linux 12 (Bookworm)
70- Debian GNU/Linux 13 (Trixie)
71- Fedora 39
72- Fedora 40
73- Fedora 41
74- Fedora 42
75- OpenSUSE Leap 15.5
76- OpenSUSE Leap 15.6
77- Rocky Linux 8
78- Rocky Linux 9
79- Ubuntu 22.04 (LTS)
80- Ubuntu 24.04 (LTS)
81- Ubuntu 25.04
82
83The following distribution versions are still tested, even though the
84organizations publishing them no longer make updates publicly available:
85
86..
87 This list contains EOL distros that are still tested on the Autobuilder
88 (meaning there are running workers).
89 See https://endoflife.date for information of EOL releases.
90
91- Fedora 39
92- Fedora 40
93- OpenSUSE Leap 15.5
94
95Note that the Yocto Project doesn't have access to private updates
96that some of these versions may have. Therefore, our testing has
97limited value if you have access to such updates. Also, :term:`buildtools`
98may have to be used on older releases in order to get current enough
99tools, such as Python.
100
101Finally, here are the distribution versions which were previously
102tested on former revisions of "&DISTRO_NAME;", but no longer are:
103
104..
105 On the master branch it does not really make sense to fill this list. We
106 should maintain the list below on stable branches once we drop support for
107 distributions.
108 The list can be generated with yocto-autobuilder-helper's scripts/yocto-supported-distros:
109 yocto-supported-distros --release <release> --config yocto-autobuilder2/config.py --output-format docs --old-distros
110
111*This list is currently empty*
64 112
65.. note:: 113.. note::
66 114
67 - While the Yocto Project Team attempts to ensure all Yocto Project 115 - While the Yocto Project Team attempts to ensure all Yocto Project
68 releases are one hundred percent compatible with each officially 116 releases are one hundred percent compatible with each officially
69 supported Linux distribution, instances might exist where you 117 supported Linux distribution, you may still encounter problems
70 encounter a problem while using the Yocto Project on a specific 118 that happen only with a specific distribution.
71 distribution.
72 119
73 - Yocto Project releases are tested against the stable Linux 120 - Yocto Project releases are tested against the stable Linux
74 distributions in the above list. The Yocto Project should work 121 distributions in the above list. The Yocto Project should work
@@ -79,24 +126,29 @@ distributions:
79 has no plans to support rolling-releases or development 126 has no plans to support rolling-releases or development
80 distributions due to their constantly changing nature. We welcome 127 distributions due to their constantly changing nature. We welcome
81 patches and bug reports, but keep in mind that our priority is on 128 patches and bug reports, but keep in mind that our priority is on
82 the supported platforms listed below. 129 the supported platforms listed above.
130
131 - If your Linux distribution is not in the above list, we recommend to
132 get the :term:`buildtools` or :term:`buildtools-extended` tarballs
133 containing the host tools required by your Yocto Project release,
134 typically by running ``scripts/install-buildtools`` as explained in
135 the ":ref:`system-requirements-buildtools`" section.
83 136
84 - You may use Windows Subsystem For Linux v2 to set up a build host 137 - You may use Windows Subsystem For Linux v2 to set up a build host
85 using Windows 10, but validation is not performed against build 138 using Windows 10 or later, or Windows Server 2019 or later, but validation
86 hosts using WSLv2. 139 is not performed against build hosts using WSL 2.
87 140
88 - The Yocto Project is not compatible with WSLv1, it is 141 See the
89 compatible but not officially supported nor validated with 142 :ref:`dev-manual/start:setting up to use windows subsystem for linux (wsl 2)`
90 WSLv2, if you still decide to use WSL please upgrade to WSLv2. 143 section in the Yocto Project Development Tasks Manual for more information.
91 144
92 - If you encounter problems, please go to :yocto_bugs:`Yocto Project 145 - If you encounter problems, please go to :yocto_bugs:`Yocto Project
93 Bugzilla <>` and submit a bug. We are 146 Bugzilla <>` and submit a bug. We are
94 interested in hearing about your experience. For information on 147 interested in hearing about your experience. For information on
95 how to submit a bug, see the Yocto Project 148 how to submit a bug, see the Yocto Project
96 :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>` 149 :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>`
97 and the ":ref:`dev-manual/common-tasks:submitting a defect against the yocto project`" 150 and the ":doc:`/contributor-guide/report-defect`"
98 section in the Yocto Project Development Tasks Manual. 151 section in the Yocto Project and OpenEmbedded Contributor Guide.
99
100 152
101Required Packages for the Build Host 153Required Packages for the Build Host
102==================================== 154====================================
@@ -111,290 +163,300 @@ function.
111Ubuntu and Debian 163Ubuntu and Debian
112----------------- 164-----------------
113 165
114The following list shows the required packages by function given a 166Here are the packages needed to build an image on a headless system
115supported Ubuntu or Debian Linux distribution: 167with a supported Ubuntu or Debian Linux distribution:
116 168
117.. note:: 169.. literalinclude:: ../tools/host_packages_scripts/ubuntu_essential.sh
170 :language: shell
118 171
119 - If your build system has the ``oss4-dev`` package installed, you 172You also need to ensure you have the ``en_US.UTF-8`` locale enabled::
120 might experience QEMU build failures due to the package installing 173
121 its own custom ``/usr/include/linux/soundcard.h`` on the Debian 174 $ locale --all-locales | grep en_US.utf8
122 system. If you run into this situation, either of the following 175
123 solutions exist: 176If this is not the case, you can reconfigure the ``locales`` package to add it
124 :: 177(requires an interactive shell)::
125 178
126 $ sudo apt-get build-dep qemu 179 $ sudo dpkg-reconfigure locales
127 $ sudo apt-get remove oss4-dev
128 180
129 - For Debian-8, ``python3-git`` and ``pylint3`` are no longer 181.. note::
130 available via ``apt-get``. 182
131 :: 183 - If you are not in an interactive shell, ``dpkg-reconfigure`` will
184 not work as expected. To add the locale you will need to edit
185 ``/etc/locale.gen`` file to add/uncomment the ``en_US.UTF-8`` locale.
186 A naive way to do this as root is::
132 187
133 $ sudo pip3 install GitPython pylint==1.9.5 188 $ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
189 $ locale-gen
134 190
135- *Essentials:* Packages needed to build an image on a headless system: 191 - If your build system has the ``oss4-dev`` package installed, you
136 :: 192 might experience QEMU build failures due to the package installing
193 its own custom ``/usr/include/linux/soundcard.h`` on the Debian
194 system. If you run into this situation, try either of these solutions::
137 195
138 $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL; 196 $ sudo apt build-dep qemu
197 $ sudo apt remove oss4-dev
139 198
140- *Documentation:* Packages needed if you are going to build out the 199Here are the packages needed to build Project documentation manuals:
141 Yocto Project documentation manuals:
142 ::
143 200
144 $ sudo apt-get install make python3-pip 201.. literalinclude:: ../tools/host_packages_scripts/ubuntu_docs.sh
145 &PIP3_HOST_PACKAGES_DOC; 202 :language: shell
146 203
147 .. note:: 204In addition to the previous packages, here are the packages needed to build the
205documentation in PDF format:
148 206
149 It is currently not possible to build out documentation from Debian 8 207.. literalinclude:: ../tools/host_packages_scripts/ubuntu_docs_pdf.sh
150 (Jessie) because of outdated ``pip3`` and ``python3``. ``python3-sphinx`` 208 :language: shell
151 is too outdated.
152 209
153Fedora Packages 210Fedora Packages
154--------------- 211---------------
155 212
156The following list shows the required packages by function given a 213Here are the packages needed to build an image on a headless system
157supported Fedora Linux distribution: 214with a supported Fedora Linux distribution:
158 215
159- *Essentials:* Packages needed to build an image for a headless 216.. literalinclude:: ../tools/host_packages_scripts/fedora_essential.sh
160 system: 217 :language: shell
161 ::
162 218
163 $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL; 219Here are the packages needed to build Project documentation manuals:
164 220
165- *Documentation:* Packages needed if you are going to build out the 221.. literalinclude:: ../tools/host_packages_scripts/fedora_docs.sh
166 Yocto Project documentation manuals: 222 :language: shell
167 ::
168 223
169 $ sudo dnf install make python3-pip which 224.. literalinclude:: ../tools/host_packages_scripts/pip3_docs.sh
170 &PIP3_HOST_PACKAGES_DOC; 225 :language: shell
171 226
172openSUSE Packages 227In addition to the previous packages, here are the packages needed to build the
173----------------- 228documentation in PDF format:
174 229
175The following list shows the required packages by function given a 230.. literalinclude:: ../tools/host_packages_scripts/fedora_docs_pdf.sh
176supported openSUSE Linux distribution: 231 :language: shell
177 232
178- *Essentials:* Packages needed to build an image for a headless 233openSUSE Packages
179 system: 234-----------------
180 ::
181
182 $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL;
183 235
184- *Documentation:* Packages needed if you are going to build out the 236Here are the packages needed to build an image on a headless system
185 Yocto Project documentation manuals: 237with a supported openSUSE distribution:
186 ::
187 238
188 $ sudo zypper install make python3-pip which 239.. literalinclude:: ../tools/host_packages_scripts/opensuse_essential.sh
189 &PIP3_HOST_PACKAGES_DOC; 240 :language: shell
190 241
242Here are the packages needed to build Project documentation manuals:
191 243
192CentOS-7 Packages 244.. literalinclude:: ../tools/host_packages_scripts/opensuse_docs.sh
193----------------- 245 :language: shell
194 246
195The following list shows the required packages by function given a 247.. literalinclude:: ../tools/host_packages_scripts/pip3_docs.sh
196supported CentOS-7 Linux distribution: 248 :language: shell
197 249
198- *Essentials:* Packages needed to build an image for a headless 250In addition to the previous packages, here are the packages needed to build the
199 system: 251documentation in PDF format:
200 ::
201 252
202 $ sudo yum install &CENTOS7_HOST_PACKAGES_ESSENTIAL; 253.. literalinclude:: ../tools/host_packages_scripts/opensuse_docs_pdf.sh
254 :language: shell
203 255
204 .. note:: 256AlmaLinux Packages
257------------------
205 258
206 - Extra Packages for Enterprise Linux (i.e. ``epel-release``) is 259Here are the packages needed to build an image on a headless system
207 a collection of packages from Fedora built on RHEL/CentOS for 260with a supported AlmaLinux distribution:
208 easy installation of packages not included in enterprise Linux
209 by default. You need to install these packages separately.
210 261
211 - The ``makecache`` command consumes additional Metadata from 262.. literalinclude:: ../tools/host_packages_scripts/almalinux_essential.sh
212 ``epel-release``. 263 :language: shell
213 264
214- *Documentation:* Packages needed if you are going to build out the 265.. note::
215 Yocto Project documentation manuals:
216 ::
217 266
218 $ sudo yum install make python3-pip which 267 - Extra Packages for Enterprise Linux (i.e. ``epel-release``) is
219 &PIP3_HOST_PACKAGES_DOC; 268 a collection of packages from Fedora built on RHEL/CentOS for
269 easy installation of packages not included in enterprise Linux
270 by default. You need to install these packages separately.
220 271
221CentOS-8 Packages 272 - The ``PowerTools/CRB`` repo provides additional packages such as
222----------------- 273 ``rpcgen`` and ``texinfo``.
223 274
224The following list shows the required packages by function given a 275 - The ``makecache`` command consumes additional Metadata from
225supported CentOS-8 Linux distribution: 276 ``epel-release``.
226 277
227- *Essentials:* Packages needed to build an image for a headless 278Here are the packages needed to build Project documentation manuals:
228 system:
229 ::
230 279
231 $ sudo dnf install &CENTOS8_HOST_PACKAGES_ESSENTIAL; 280.. literalinclude:: ../tools/host_packages_scripts/almalinux_docs.sh
281 :language: shell
232 282
233 .. note:: 283.. literalinclude:: ../tools/host_packages_scripts/pip3_docs.sh
284 :language: shell
234 285
235 - Extra Packages for Enterprise Linux (i.e. ``epel-release``) is 286.. warning::
236 a collection of packages from Fedora built on RHEL/CentOS for
237 easy installation of packages not included in enterprise Linux
238 by default. You need to install these packages separately.
239 287
240 - The ``PowerTools`` repo provides additional packages such as 288 Unlike Fedora or OpenSUSE, AlmaLinux does not provide the packages
241 ``rpcgen`` and ``texinfo``. 289 ``texlive-collection-fontsextra``, ``texlive-collection-lang*`` and
290 ``texlive-collection-latexextra``, so you may run into issues. These may be
291 installed using `tlmgr <https://tug.org/texlive/tlmgr.html>`_.
242 292
243 - The ``makecache`` command consumes additional Metadata from 293In addition to the previous packages, here are the packages needed to build the
244 ``epel-release``. 294documentation in PDF format:
245 295
246- *Documentation:* Packages needed if you are going to build out the 296.. literalinclude:: ../tools/host_packages_scripts/almalinux_docs_pdf.sh
247 Yocto Project documentation manuals: 297 :language: shell
248 ::
249 298
250 $ sudo dnf install make python3-pip which 299.. _system-requirements-buildtools:
251 &PIP3_HOST_PACKAGES_DOC;
252 300
253Required Git, tar, Python and gcc Versions 301Required Git, tar, Python, make and gcc Versions
254========================================== 302================================================
255 303
256In order to use the build system, your host development system must meet 304In order to use the build system, your host development system must meet
257the following version requirements for Git, tar, and Python: 305the following version requirements for Git, tar, and Python:
258 306
259- Git 1.8.3.1 or greater 307- Git &MIN_GIT_VERSION; or greater
260 308
261- tar 1.28 or greater 309- tar &MIN_TAR_VERSION; or greater
262 310
263- Python 3.5.0 or greater 311- Python &MIN_PYTHON_VERSION; or greater
312
313- GNU make &MIN_MAKE_VERSION; or greater
264 314
265If your host development system does not meet all these requirements, 315If your host development system does not meet all these requirements,
266you can resolve this by installing a ``buildtools`` tarball that 316you can resolve this by installing a :term:`buildtools` tarball that
267contains these tools. You can get the tarball one of two ways: download 317contains these tools. You can either download a pre-built tarball or
268a pre-built tarball or use BitBake to build the tarball. 318use BitBake to build one.
269 319
270In addition, your host development system must meet the following 320In addition, your host development system must meet the following
271version requirement for gcc: 321version requirement for gcc:
272 322
273- gcc 5.0 or greater 323- gcc &MIN_GCC_VERSION; or greater
274 324
275If your host development system does not meet this requirement, you can 325If your host development system does not meet this requirement, you can
276resolve this by installing a ``buildtools-extended`` tarball that 326resolve this by installing a :term:`buildtools-extended` tarball that
277contains additional tools, the equivalent of ``buildtools-essential``. 327contains additional tools, the equivalent of the Debian/Ubuntu ``build-essential``
328package.
329
330For systems with a broken make version (e.g. make 4.2.1 without patches) but
331where the rest of the host tools are usable, you can use the :term:`buildtools-make`
332tarball instead.
333
334In the sections that follow, three different methods will be described for
335installing the :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`
336toolset.
278 337
279Installing a Pre-Built ``buildtools`` Tarball with ``install-buildtools`` script 338Installing a Pre-Built ``buildtools`` Tarball with ``install-buildtools`` script
280-------------------------------------------------------------------------------- 339--------------------------------------------------------------------------------
281 340
282The ``install-buildtools`` script is the easiest of the three methods by 341The ``install-buildtools`` script is the easiest of the three methods by
283which you can get these tools. It downloads a pre-built buildtools 342which you can get these tools. It downloads a pre-built :term:`buildtools`
284installer and automatically installs the tools for you: 343installer and automatically installs the tools for you:
285 344
2861. Execute the ``install-buildtools`` script. Here is an example: 345#. Execute the ``install-buildtools`` script. Here is an example::
287 ::
288 346
289 $ cd poky 347 $ cd poky
290 $ scripts/install-buildtools --without-extended-buildtools \ 348 $ scripts/install-buildtools \
349 --without-extended-buildtools \
291 --base-url &YOCTO_DL_URL;/releases/yocto \ 350 --base-url &YOCTO_DL_URL;/releases/yocto \
292 --release yocto-&DISTRO; \ 351 --release yocto-&DISTRO; \
293 --installer-version &DISTRO; 352 --installer-version &DISTRO;
294 353
295 During execution, the buildtools tarball will be downloaded, the 354 During execution, the :term:`buildtools` tarball will be downloaded, the
296 checksum of the download will be verified, the installer will be run 355 checksum of the download will be verified, the installer will be run
297 for you, and some basic checks will be run to to make sure the 356 for you, and some basic checks will be run to make sure the
298 installation is functional. 357 installation is functional.
299 358
300 To avoid the need of ``sudo`` privileges, the ``install-buildtools`` 359 To avoid the need of ``sudo`` privileges, the ``install-buildtools``
301 script will by default tell the installer to install in: 360 script will by default tell the installer to install in::
302 ::
303 361
304 /path/to/poky/buildtools 362 /path/to/poky/buildtools
305 363
306 If your host development system needs the additional tools provided 364 If your host development system needs the additional tools provided
307 in the ``buildtools-extended`` tarball, you can instead execute the 365 in the :term:`buildtools-extended` tarball, you can instead execute the
308 ``install-buildtools`` script with the default parameters: 366 ``install-buildtools`` script with the default parameters::
309 ::
310 367
311 $ cd poky 368 $ cd poky
312 $ scripts/install-buildtools 369 $ scripts/install-buildtools
313 370
3142. Source the tools environment setup script by using a command like the 371 Alternatively if your host development system has a broken ``make``
315 following: 372 version such that you only need a known good version of ``make``,
316 :: 373 you can use the ``--make-only`` option::
317 374
318 $ source /path/to/poky/buildtools/environment-setup-x86_64-pokysdk-linux 375 $ cd poky
376 $ scripts/install-buildtools --make-only
377
378#. Source the tools environment setup script by using a command like the
379 following::
319 380
320 Of course, you need to supply your installation directory and be sure to 381 $ source /path/to/poky/buildtools/environment-setup-x86_64-pokysdk-linux
321 use the right file (i.e. i586 or x86_64).
322 382
323 After you have sourced the setup script, the tools are added to 383 After you have sourced the setup script, the tools are added to
324 ``PATH`` and any other environment variables required to run the 384 ``PATH`` and any other environment variables required to run the
325 tools are initialized. The results are working versions versions of 385 tools are initialized. The results are working versions versions of
326 Git, tar, Python and ``chrpath``. And in the case of the 386 Git, tar, Python and ``chrpath``. And in the case of the
327 ``buildtools-extended`` tarball, additional working versions of tools 387 :term:`buildtools-extended` tarball, additional working versions of tools
328 including ``gcc``, ``make`` and the other tools included in 388 including ``gcc``, ``make`` and the other tools included in
329 ``packagegroup-core-buildessential``. 389 ``packagegroup-core-buildessential``.
330 390
331Downloading a Pre-Built ``buildtools`` Tarball 391Downloading a Pre-Built ``buildtools`` Tarball
332---------------------------------------------- 392----------------------------------------------
333 393
334Downloading and running a pre-built buildtools installer is the easiest 394If you would prefer not to use the ``install-buildtools`` script, you can instead
335of the two methods by which you can get these tools: 395download and run a pre-built :term:`buildtools` installer yourself with the following
396steps:
336 397
3371. Locate and download the ``*.sh`` at &YOCTO_RELEASE_DL_URL;/buildtools/ 398#. Go to :yocto_dl:`/releases/yocto/&DISTRO_REL_LATEST_TAG;/buildtools/`, locate and
399 download the ``.sh`` file corresponding to your host architecture
400 and to :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`.
338 401
3392. Execute the installation script. Here is an example for the 402#. Execute the installation script. Here is an example for the
340 traditional installer: 403 traditional installer::
341 ::
342 404
343 $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh 405 $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
344 406
345 Here is an example for the extended installer: 407 Here is an example for the extended installer::
346 ::
347 408
348 $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh 409 $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
349 410
411 An example for the make-only installer::
412
413 $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh
414
350 During execution, a prompt appears that allows you to choose the 415 During execution, a prompt appears that allows you to choose the
351 installation directory. For example, you could choose the following: 416 installation directory. For example, you could choose the following:
352 ``/home/your-username/buildtools`` 417 ``/home/your-username/buildtools``
353 418
3543. Source the tools environment setup script by using a command like the 419#. As instructed by the installer script, you will have to source the tools
355 following: 420 environment setup script::
356 ::
357 421
358 $ source /home/your_username/buildtools/environment-setup-i586-poky-linux 422 $ source /home/your_username/buildtools/environment-setup-x86_64-pokysdk-linux
359
360 Of
361 course, you need to supply your installation directory and be sure to
362 use the right file (i.e. i585 or x86-64).
363 423
364 After you have sourced the setup script, the tools are added to 424 After you have sourced the setup script, the tools are added to
365 ``PATH`` and any other environment variables required to run the 425 ``PATH`` and any other environment variables required to run the
366 tools are initialized. The results are working versions versions of 426 tools are initialized. The results are working versions versions of
367 Git, tar, Python and ``chrpath``. And in the case of the 427 Git, tar, Python and ``chrpath``. And in the case of the
368 ``buildtools-extended`` tarball, additional working versions of tools 428 :term:`buildtools-extended` tarball, additional working versions of tools
369 including ``gcc``, ``make`` and the other tools included in 429 including ``gcc``, ``make`` and the other tools included in
370 ``packagegroup-core-buildessential``. 430 ``packagegroup-core-buildessential``.
371 431
372Building Your Own ``buildtools`` Tarball 432Building Your Own ``buildtools`` Tarball
373---------------------------------------- 433----------------------------------------
374 434
375Building and running your own buildtools installer applies only when you 435Building and running your own :term:`buildtools` installer applies only when you
376have a build host that can already run BitBake. In this case, you use 436have a build host that can already run BitBake. In this case, you use
377that machine to build the ``.sh`` file and then take steps to transfer 437that machine to build the ``.sh`` file and then take steps to transfer
378and run it on a machine that does not meet the minimal Git, tar, and 438and run it on a machine that does not meet the minimal Git, tar, and
379Python (or gcc) requirements. 439Python (or gcc) requirements.
380 440
381Here are the steps to take to build and run your own buildtools 441Here are the steps to take to build and run your own :term:`buildtools`
382installer: 442installer:
383 443
3841. On the machine that is able to run BitBake, be sure you have set up 444#. On the machine that is able to run BitBake, be sure you have set up
385 your build environment with the setup script 445 your build environment with the setup script
386 (:ref:`structure-core-script`). 446 (:ref:`structure-core-script`).
387 447
3882. Run the BitBake command to build the tarball: 448#. Run the BitBake command to build the tarball::
389 ::
390 449
391 $ bitbake buildtools-tarball 450 $ bitbake buildtools-tarball
392 451
393 or run the BitBake command to build the extended tarball: 452 or to build the extended tarball::
394 ::
395 453
396 $ bitbake buildtools-extended-tarball 454 $ bitbake buildtools-extended-tarball
397 455
456 or to build the make-only tarball::
457
458 $ bitbake buildtools-make-tarball
459
398 .. note:: 460 .. note::
399 461
400 The :term:`SDKMACHINE` variable in your ``local.conf`` file determines 462 The :term:`SDKMACHINE` variable in your ``local.conf`` file determines
@@ -403,40 +465,37 @@ installer:
403 Once the build completes, you can find the ``.sh`` file that installs 465 Once the build completes, you can find the ``.sh`` file that installs
404 the tools in the ``tmp/deploy/sdk`` subdirectory of the 466 the tools in the ``tmp/deploy/sdk`` subdirectory of the
405 :term:`Build Directory`. The installer file has the string 467 :term:`Build Directory`. The installer file has the string
406 "buildtools" (or "buildtools-extended") in the name. 468 "buildtools" or "buildtools-extended" in the name.
407 469
4083. Transfer the ``.sh`` file from the build host to the machine that 470#. Transfer the ``.sh`` file from the build host to the machine that
409 does not meet the Git, tar, or Python (or gcc) requirements. 471 does not meet the Git, tar, or Python (or gcc) requirements.
410 472
4114. On the machine that does not meet the requirements, run the ``.sh`` 473#. On this machine, run the ``.sh`` file to install the tools. Here is an
412 file to install the tools. Here is an example for the traditional 474 example for the traditional installer::
413 installer:
414 ::
415 475
416 $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh 476 $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
417 477
418 Here is an example for the extended installer: 478 For the extended installer::
419 ::
420 479
421 $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh 480 $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
422 481
482 And for the make-only installer::
483
484 $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh
485
423 During execution, a prompt appears that allows you to choose the 486 During execution, a prompt appears that allows you to choose the
424 installation directory. For example, you could choose the following: 487 installation directory. For example, you could choose the following:
425 ``/home/your_username/buildtools`` 488 ``/home/your_username/buildtools``
426 489
4275. Source the tools environment setup script by using a command like the 490#. Source the tools environment setup script by using a command like the
428 following: 491 following::
429 ::
430 492
431 $ source /home/your_username/buildtools/environment-setup-x86_64-poky-linux 493 $ source /home/your_username/buildtools/environment-setup-x86_64-poky-linux
432 494
433 Of course, you need to supply your installation directory and be sure to
434 use the right file (i.e. i586 or x86_64).
435
436 After you have sourced the setup script, the tools are added to 495 After you have sourced the setup script, the tools are added to
437 ``PATH`` and any other environment variables required to run the 496 ``PATH`` and any other environment variables required to run the
438 tools are initialized. The results are working versions versions of 497 tools are initialized. The results are working versions versions of
439 Git, tar, Python and ``chrpath``. And in the case of the 498 Git, tar, Python and ``chrpath``. And in the case of the
440 ``buildtools-extended`` tarball, additional working versions of tools 499 :term:`buildtools-extended` tarball, additional working versions of tools
441 including ``gcc``, ``make`` and the other tools included in 500 including ``gcc``, ``make`` and the other tools included in
442 ``packagegroup-core-buildessential``. 501 ``packagegroup-core-buildessential``.
diff --git a/documentation/ref-manual/tasks.rst b/documentation/ref-manual/tasks.rst
index 9fe1c296aa..90f70c1ac1 100644
--- a/documentation/ref-manual/tasks.rst
+++ b/documentation/ref-manual/tasks.rst
@@ -14,8 +14,8 @@ Normal Recipe Build Tasks
14 14
15The following sections describe normal tasks associated with building a 15The following sections describe normal tasks associated with building a
16recipe. For more information on tasks and dependencies, see the 16recipe. For more information on tasks and dependencies, see the
17":ref:`Tasks <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:tasks>`" and 17":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
18":ref:`Dependencies <bitbake:bitbake-user-manual/bitbake-user-manual-execution:dependencies>`" sections in the 18":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
19BitBake User Manual. 19BitBake User Manual.
20 20
21.. _ref-tasks-build: 21.. _ref-tasks-build:
@@ -36,7 +36,7 @@ directory set to ``${``\ :term:`B`\ ``}``.
36 36
37The default behavior of this task is to run the ``oe_runmake`` function 37The default behavior of this task is to run the ``oe_runmake`` function
38if a makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found. 38if a makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found.
39If no such file is found, the ``do_compile`` task does nothing. 39If no such file is found, the :ref:`ref-tasks-compile` task does nothing.
40 40
41.. _ref-tasks-compile_ptest_base: 41.. _ref-tasks-compile_ptest_base:
42 42
@@ -57,8 +57,8 @@ the current working directory set to ``${``\ :term:`B`\ ``}``.
57The default behavior of this task is to run ``oe_runmake clean`` if a 57The default behavior of this task is to run ``oe_runmake clean`` if a
58makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found and 58makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found and
59:term:`CLEANBROKEN` is not set to "1". If no such 59:term:`CLEANBROKEN` is not set to "1". If no such
60file is found or the ``CLEANBROKEN`` variable is set to "1", the 60file is found or the :term:`CLEANBROKEN` variable is set to "1", the
61``do_configure`` task does nothing. 61:ref:`ref-tasks-configure` task does nothing.
62 62
63.. _ref-tasks-configure_ptest_base: 63.. _ref-tasks-configure_ptest_base:
64 64
@@ -78,10 +78,10 @@ task runs with the current working directory set to
78``${``\ :term:`B`\ ``}``. 78``${``\ :term:`B`\ ``}``.
79 79
80Recipes implementing this task should inherit the 80Recipes implementing this task should inherit the
81:ref:`deploy <ref-classes-deploy>` class and should write the output 81:ref:`ref-classes-deploy` class and should write the output
82to ``${``\ :term:`DEPLOYDIR`\ ``}``, which is not to be 82to ``${``\ :term:`DEPLOYDIR`\ ``}``, which is not to be
83confused with ``${DEPLOY_DIR}``. The ``deploy`` class sets up 83confused with ``${DEPLOY_DIR}``. The :ref:`ref-classes-deploy` class sets up
84``do_deploy`` as a shared state (sstate) task that can be accelerated 84:ref:`ref-tasks-deploy` as a shared state (sstate) task that can be accelerated
85through sstate use. The sstate mechanism takes care of copying the 85through sstate use. The sstate mechanism takes care of copying the
86output from ``${DEPLOYDIR}`` to ``${DEPLOY_DIR_IMAGE}``. 86output from ``${DEPLOYDIR}`` to ``${DEPLOY_DIR_IMAGE}``.
87 87
@@ -90,21 +90,19 @@ output from ``${DEPLOYDIR}`` to ``${DEPLOY_DIR_IMAGE}``.
90 Do not write the output directly to ``${DEPLOY_DIR_IMAGE}``, as this causes 90 Do not write the output directly to ``${DEPLOY_DIR_IMAGE}``, as this causes
91 the sstate mechanism to malfunction. 91 the sstate mechanism to malfunction.
92 92
93The ``do_deploy`` task is not added as a task by default and 93The :ref:`ref-tasks-deploy` task is not added as a task by default and
94consequently needs to be added manually. If you want the task to run 94consequently needs to be added manually. If you want the task to run
95after :ref:`ref-tasks-compile`, you can add it by doing 95after :ref:`ref-tasks-compile`, you can add it by doing
96the following: 96the following::
97::
98 97
99 addtask deploy after do_compile 98 addtask deploy after do_compile
100 99
101Adding ``do_deploy`` after other tasks works the same way. 100Adding :ref:`ref-tasks-deploy` after other tasks works the same way.
102 101
103.. note:: 102.. note::
104 103
105 You do not need to add ``before do_build`` to the ``addtask`` command 104 You do not need to add ``before do_build`` to the ``addtask`` command
106 (though it is harmless), because the ``base`` class contains the following: 105 (though it is harmless), because the :ref:`ref-classes-base` class contains the following::
107 ::
108 106
109 do_build[recrdeptask] += "do_deploy" 107 do_build[recrdeptask] += "do_deploy"
110 108
@@ -112,7 +110,7 @@ Adding ``do_deploy`` after other tasks works the same way.
112 See the ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" 110 See the ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`"
113 section in the BitBake User Manual for more information. 111 section in the BitBake User Manual for more information.
114 112
115If the ``do_deploy`` task re-executes, any previous output is removed 113If the :ref:`ref-tasks-deploy` task re-executes, any previous output is removed
116(i.e. "cleaned"). 114(i.e. "cleaned").
117 115
118.. _ref-tasks-fetch: 116.. _ref-tasks-fetch:
@@ -120,9 +118,9 @@ If the ``do_deploy`` task re-executes, any previous output is removed
120``do_fetch`` 118``do_fetch``
121------------ 119------------
122 120
123Fetches the source code. This task uses the 121Fetches the source code. This task uses the :term:`SRC_URI` variable and the
124:term:`SRC_URI` variable and the argument's prefix to 122argument's prefix to determine the correct
125determine the correct :ref:`fetcher <bitbake:bitbake-user-manual/bitbake-user-manual-fetching:fetchers>` 123:ref:`fetcher <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
126module. 124module.
127 125
128.. _ref-tasks-image: 126.. _ref-tasks-image:
@@ -130,15 +128,15 @@ module.
130``do_image`` 128``do_image``
131------------ 129------------
132 130
133Starts the image generation process. The ``do_image`` task runs after 131Starts the image generation process. The :ref:`ref-tasks-image` task runs after
134the OpenEmbedded build system has run the 132the OpenEmbedded build system has run the
135:ref:`ref-tasks-rootfs` task during which packages are 133:ref:`ref-tasks-rootfs` task during which packages are
136identified for installation into the image and the root filesystem is 134identified for installation into the image and the root filesystem is
137created, complete with post-processing. 135created, complete with post-processing.
138 136
139The ``do_image`` task performs pre-processing on the image through the 137The :ref:`ref-tasks-image` task performs pre-processing on the image through the
140:term:`IMAGE_PREPROCESS_COMMAND` and 138:term:`IMAGE_PREPROCESS_COMMAND` and
141dynamically generates supporting ``do_image_*`` tasks as needed. 139dynamically generates supporting :ref:`do_image_* <ref-tasks-image>` tasks as needed.
142 140
143For more information on image creation, see the ":ref:`overview-manual/concepts:image generation`" 141For more information on image creation, see the ":ref:`overview-manual/concepts:image generation`"
144section in the Yocto Project Overview and Concepts Manual. 142section in the Yocto Project Overview and Concepts Manual.
@@ -148,13 +146,13 @@ section in the Yocto Project Overview and Concepts Manual.
148``do_image_complete`` 146``do_image_complete``
149--------------------- 147---------------------
150 148
151Completes the image generation process. The ``do_image_complete`` task 149Completes the image generation process. The :ref:`do_image_complete <ref-tasks-image-complete>` task
152runs after the OpenEmbedded build system has run the 150runs after the OpenEmbedded build system has run the
153:ref:`ref-tasks-image` task during which image 151:ref:`ref-tasks-image` task during which image
154pre-processing occurs and through dynamically generated ``do_image_*`` 152pre-processing occurs and through dynamically generated :ref:`do_image_* <ref-tasks-image>`
155tasks the image is constructed. 153tasks the image is constructed.
156 154
157The ``do_image_complete`` task performs post-processing on the image 155The :ref:`do_image_complete <ref-tasks-image-complete>` task performs post-processing on the image
158through the 156through the
159:term:`IMAGE_POSTPROCESS_COMMAND`. 157:term:`IMAGE_POSTPROCESS_COMMAND`.
160 158
@@ -170,9 +168,9 @@ section in the Yocto Project Overview and Concepts Manual.
170Copies files that are to be packaged into the holding area 168Copies files that are to be packaged into the holding area
171``${``\ :term:`D`\ ``}``. This task runs with the current 169``${``\ :term:`D`\ ``}``. This task runs with the current
172working directory set to ``${``\ :term:`B`\ ``}``, which is the 170working directory set to ``${``\ :term:`B`\ ``}``, which is the
173compilation directory. The ``do_install`` task, as well as other tasks 171compilation directory. The :ref:`ref-tasks-install` task, as well as other tasks
174that either directly or indirectly depend on the installed files (e.g. 172that either directly or indirectly depend on the installed files (e.g.
175:ref:`ref-tasks-package`, ``do_package_write_*``, and 173:ref:`ref-tasks-package`, :ref:`do_package_write_* <ref-tasks-package_write_deb>`, and
176:ref:`ref-tasks-rootfs`), run under 174:ref:`ref-tasks-rootfs`), run under
177:ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`. 175:ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`.
178 176
@@ -189,11 +187,11 @@ that either directly or indirectly depend on the installed files (e.g.
189 187
190 - The ``install`` utility. This utility is the preferred method. 188 - The ``install`` utility. This utility is the preferred method.
191 189
192 - The ``cp`` command with the "--no-preserve=ownership" option. 190 - The ``cp`` command with the ``--no-preserve=ownership`` option.
193 191
194 - The ``tar`` command with the "--no-same-owner" option. See the 192 - The ``tar`` command with the ``--no-same-owner`` option. See the
195 ``bin_package.bbclass`` file in the ``meta/classes`` directory of 193 ``bin_package.bbclass`` file in the ``meta/classes-recipe``
196 the :term:`Source Directory` for an example. 194 subdirectory of the :term:`Source Directory` for an example.
197 195
198.. _ref-tasks-install_ptest_base: 196.. _ref-tasks-install_ptest_base:
199 197
@@ -214,7 +212,7 @@ based on available packages and files. This task makes use of the
214:term:`PACKAGES` and :term:`FILES` 212:term:`PACKAGES` and :term:`FILES`
215variables. 213variables.
216 214
217The ``do_package`` task, in conjunction with the 215The :ref:`ref-tasks-package` task, in conjunction with the
218:ref:`ref-tasks-packagedata` task, also saves some 216:ref:`ref-tasks-packagedata` task, also saves some
219important package metadata. For additional information, see the 217important package metadata. For additional information, see the
220:term:`PKGDESTWORK` variable and the 218:term:`PKGDESTWORK` variable and the
@@ -227,7 +225,7 @@ section in the Yocto Project Overview and Concepts Manual.
227----------------- 225-----------------
228 226
229Runs QA checks on packaged files. For more information on these checks, 227Runs QA checks on packaged files. For more information on these checks,
230see the :ref:`insane <ref-classes-insane>` class. 228see the :doc:`/ref-manual/qa-checks` document.
231 229
232.. _ref-tasks-package_write_deb: 230.. _ref-tasks-package_write_deb:
233 231
@@ -262,17 +260,6 @@ the package feeds area. For more information, see the
262":ref:`overview-manual/concepts:package feeds`" section in 260":ref:`overview-manual/concepts:package feeds`" section in
263the Yocto Project Overview and Concepts Manual. 261the Yocto Project Overview and Concepts Manual.
264 262
265.. _ref-tasks-package_write_tar:
266
267``do_package_write_tar``
268------------------------
269
270Creates tarballs and places them in the
271``${``\ :term:`DEPLOY_DIR_TAR`\ ``}`` directory in
272the package feeds area. For more information, see the
273":ref:`overview-manual/concepts:package feeds`" section in
274the Yocto Project Overview and Concepts Manual.
275
276.. _ref-tasks-packagedata: 263.. _ref-tasks-packagedata:
277 264
278``do_packagedata`` 265``do_packagedata``
@@ -302,56 +289,50 @@ Patch files, by default, are ``*.patch`` and ``*.diff`` files created
302and kept in a subdirectory of the directory holding the recipe file. For 289and kept in a subdirectory of the directory holding the recipe file. For
303example, consider the 290example, consider the
304:yocto_git:`bluez5 </poky/tree/meta/recipes-connectivity/bluez5>` 291:yocto_git:`bluez5 </poky/tree/meta/recipes-connectivity/bluez5>`
305recipe from the OE-Core layer (i.e. ``poky/meta``): 292recipe from the OE-Core layer (i.e. ``poky/meta``)::
306::
307 293
308 poky/meta/recipes-connectivity/bluez5 294 poky/meta/recipes-connectivity/bluez5
309 295
310This recipe has two patch files located here: 296This recipe has two patch files located here::
311::
312 297
313 poky/meta/recipes-connectivity/bluez5/bluez5 298 poky/meta/recipes-connectivity/bluez5/bluez5
314 299
315In the ``bluez5`` recipe, the ``SRC_URI`` statements point to the source 300In the ``bluez5`` recipe, the :term:`SRC_URI` statements point to the source
316and patch files needed to build the package. 301and patch files needed to build the package.
317 302
318.. note:: 303.. note::
319 304
320 In the case for the ``bluez5_5.48.bb`` recipe, the ``SRC_URI`` statements 305 In the case for the ``bluez5_5.48.bb`` recipe, the :term:`SRC_URI` statements
321 are from an include file ``bluez5.inc``. 306 are from an include file ``bluez5.inc``.
322 307
323As mentioned earlier, the build system treats files whose file types are 308As mentioned earlier, the build system treats files whose file types are
324``.patch`` and ``.diff`` as patch files. However, you can use the 309``.patch`` and ``.diff`` as patch files. However, you can use the
325"apply=yes" parameter with the ``SRC_URI`` statement to indicate any 310"apply=yes" parameter with the :term:`SRC_URI` statement to indicate any
326file as a patch file: 311file as a patch file::
327::
328 312
329 SRC_URI = " \ 313 SRC_URI = " \
330 git://path_to_repo/some_package \ 314 git://path_to_repo/some_package \
331 file://file;apply=yes \ 315 file://file;apply=yes \
332 " 316 "
333 317
334Conversely, if you have a directory full of patch files and you want to 318Conversely, if you have a file whose file type is ``.patch`` or ``.diff``
335exclude some so that the ``do_patch`` task does not apply them during 319and you want to exclude it so that the :ref:`ref-tasks-patch` task does not apply
336the patch phase, you can use the "apply=no" parameter with the 320it during the patch phase, you can use the "apply=no" parameter with the
337``SRC_URI`` statement: 321:term:`SRC_URI` statement::
338::
339 322
340 SRC_URI = " \ 323 SRC_URI = " \
341 git://path_to_repo/some_package \ 324 git://path_to_repo/some_package \
342 file://path_to_lots_of_patch_files \ 325 file://file1.patch \
343 file://path_to_lots_of_patch_files/patch_file5;apply=no \ 326 file://file2.patch;apply=no \
344 " 327 "
345 328
346In the 329In the previous example ``file1.patch`` would be applied as a patch by default
347previous example, assuming all the files in the directory holding the 330while ``file2.patch`` would not be applied.
348patch files end with either ``.patch`` or ``.diff``, every file would be
349applied as a patch by default except for the ``patch_file5`` patch.
350 331
351You can find out more about the patching process in the 332You can find out more about the patching process in the
352":ref:`overview-manual/concepts:patching`" section in 333":ref:`overview-manual/concepts:patching`" section in
353the Yocto Project Overview and Concepts Manual and the 334the Yocto Project Overview and Concepts Manual and the
354":ref:`dev-manual/common-tasks:patching code`" section in the 335":ref:`dev-manual/new-recipe:patching code`" section in the
355Yocto Project Development Tasks Manual. 336Yocto Project Development Tasks Manual.
356 337
357.. _ref-tasks-populate_lic: 338.. _ref-tasks-populate_lic:
@@ -377,7 +358,7 @@ information.
377``do_populate_sdk_ext`` 358``do_populate_sdk_ext``
378----------------------- 359-----------------------
379 360
380Creates the file and directory structure for an installable extensible 361Creates the file and directory structure for an installable extensible
381SDK (eSDK). See the ":ref:`overview-manual/concepts:sdk generation`" 362SDK (eSDK). See the ":ref:`overview-manual/concepts:sdk generation`"
382section in the Yocto Project Overview and Concepts Manual for more 363section in the Yocto Project Overview and Concepts Manual for more
383information. 364information.
@@ -400,7 +381,7 @@ For information on what directories are copied by default, see the
400these variables inside your recipe if you need to make additional (or 381these variables inside your recipe if you need to make additional (or
401fewer) directories available to other recipes at build time. 382fewer) directories available to other recipes at build time.
402 383
403The ``do_populate_sysroot`` task is a shared state (sstate) task, which 384The :ref:`ref-tasks-populate_sysroot` task is a shared state (sstate) task, which
404means that the task can be accelerated through sstate use. Realize also 385means that the task can be accelerated through sstate use. Realize also
405that if the task is re-executed, any previous output is removed (i.e. 386that if the task is re-executed, any previous output is removed (i.e.
406"cleaned"). 387"cleaned").
@@ -414,7 +395,18 @@ Installs the files into the individual recipe specific sysroots (i.e.
414``recipe-sysroot`` and ``recipe-sysroot-native`` under 395``recipe-sysroot`` and ``recipe-sysroot-native`` under
415``${``\ :term:`WORKDIR`\ ``}`` based upon the 396``${``\ :term:`WORKDIR`\ ``}`` based upon the
416dependencies specified by :term:`DEPENDS`). See the 397dependencies specified by :term:`DEPENDS`). See the
417":ref:`staging <ref-classes-staging>`" class for more information. 398":ref:`ref-classes-staging`" class for more information.
399
400.. _ref-tasks-recipe-qa:
401
402``do_recipe_qa``
403----------------
404
405Performs QA check on recipes that can operate entirely from recipe metadata and
406do not need any of the build artefacts or source code.
407
408The list of QA checks that this tasks defines are documented in
409:doc:`/ref-manual/qa-checks`.
418 410
419.. _ref-tasks-rm_work: 411.. _ref-tasks-rm_work:
420 412
@@ -423,7 +415,7 @@ dependencies specified by :term:`DEPENDS`). See the
423 415
424Removes work files after the OpenEmbedded build system has finished with 416Removes work files after the OpenEmbedded build system has finished with
425them. You can learn more by looking at the 417them. You can learn more by looking at the
426":ref:`rm_work.bbclass <ref-classes-rm-work>`" section. 418":ref:`ref-classes-rm-work`" section.
427 419
428.. _ref-tasks-unpack: 420.. _ref-tasks-unpack:
429 421
@@ -431,12 +423,10 @@ them. You can learn more by looking at the
431------------- 423-------------
432 424
433Unpacks the source code into a working directory pointed to by 425Unpacks the source code into a working directory pointed to by
434``${``\ :term:`WORKDIR`\ ``}``. The :term:`S` 426``${``\ :term:`UNPACKDIR`\ ``}``.
435variable also plays a role in where unpacked source files ultimately 427For more information on how source files are unpacked, see the
436reside. For more information on how source files are unpacked, see the
437":ref:`overview-manual/concepts:source fetching`" 428":ref:`overview-manual/concepts:source fetching`"
438section in the Yocto Project Overview and Concepts Manual and also see 429section in the Yocto Project Overview and Concepts Manual.
439the ``WORKDIR`` and ``S`` variable descriptions.
440 430
441Manually Called Tasks 431Manually Called Tasks
442===================== 432=====================
@@ -444,39 +434,6 @@ Manually Called Tasks
444These tasks are typically manually triggered (e.g. by using the 434These tasks are typically manually triggered (e.g. by using the
445``bitbake -c`` command-line option): 435``bitbake -c`` command-line option):
446 436
447.. _ref-tasks-checkpkg:
448
449``do_checkpkg``
450---------------
451
452Provides information about the recipe including its upstream version and
453status. The upstream version and status reveals whether or not a version
454of the recipe exists upstream and a status of not updated, updated, or
455unknown.
456
457To check the upstream version and status of a recipe, use the following
458devtool commands:
459::
460
461 $ devtool latest-version
462 $ devtool check-upgrade-status
463
464See the ":ref:`ref-manual/devtool-reference:\`\`devtool\`\` quick reference`"
465chapter for more information on
466``devtool``. See the ":ref:`devtool-checking-on-the-upgrade-status-of-a-recipe`"
467section for information on checking the upgrade status of a recipe.
468
469To build the ``checkpkg`` task, use the ``bitbake`` command with the
470"-c" option and task name:
471::
472
473 $ bitbake core-image-minimal -c checkpkg
474
475By default, the results are stored in :term:`$LOG_DIR <LOG_DIR>` (e.g.
476``$BUILD_DIR/tmp/log``).
477
478.. _ref-tasks-checkuri:
479
480``do_checkuri`` 437``do_checkuri``
481--------------- 438---------------
482 439
@@ -488,14 +445,13 @@ Validates the :term:`SRC_URI` value.
488------------ 445------------
489 446
490Removes all output files for a target from the 447Removes all output files for a target from the
491:ref:`ref-tasks-unpack` task forward (i.e. ``do_unpack``, 448:ref:`ref-tasks-unpack` task forward (i.e. :ref:`ref-tasks-unpack`,
492:ref:`ref-tasks-configure`, 449:ref:`ref-tasks-configure`,
493:ref:`ref-tasks-compile`, 450:ref:`ref-tasks-compile`,
494:ref:`ref-tasks-install`, and 451:ref:`ref-tasks-install`, and
495:ref:`ref-tasks-package`). 452:ref:`ref-tasks-package`).
496 453
497You can run this task using BitBake as follows: 454You can run this task using BitBake as follows::
498::
499 455
500 $ bitbake -c clean recipe 456 $ bitbake -c clean recipe
501 457
@@ -515,18 +471,37 @@ use the :ref:`ref-tasks-cleansstate` task instead
515Removes all output files, shared state 471Removes all output files, shared state
516(:ref:`sstate <overview-manual/concepts:shared state cache>`) cache, and 472(:ref:`sstate <overview-manual/concepts:shared state cache>`) cache, and
517downloaded source files for a target (i.e. the contents of 473downloaded source files for a target (i.e. the contents of
518:term:`DL_DIR`). Essentially, the ``do_cleanall`` task is 474:term:`DL_DIR`). Essentially, the :ref:`ref-tasks-cleanall` task is
519identical to the :ref:`ref-tasks-cleansstate` task 475identical to the :ref:`ref-tasks-cleansstate` task
520with the added removal of downloaded source files. 476with the added removal of downloaded source files.
521 477
522You can run this task using BitBake as follows: 478You can run this task using BitBake as follows::
523::
524 479
525 $ bitbake -c cleanall recipe 480 $ bitbake -c cleanall recipe
526 481
527Typically, you would not normally use the ``cleanall`` task. Do so only 482You should never use the :ref:`ref-tasks-cleanall` task in a normal
528if you want to start fresh with the :ref:`ref-tasks-fetch` 483scenario. If you want to start fresh with the :ref:`ref-tasks-fetch` task,
529task. 484use instead::
485
486 $ bitbake -f -c fetch recipe
487
488.. note::
489
490 The reason to prefer ``bitbake -f -c fetch`` is that the
491 :ref:`ref-tasks-cleanall` task would break in some cases, such as::
492
493 $ bitbake -c fetch recipe
494 $ bitbake -c cleanall recipe-native
495 $ bitbake -c unpack recipe
496
497 because after step 1 there is a stamp file for the
498 :ref:`ref-tasks-fetch` task of ``recipe``, and it won't be removed at
499 step 2 because step 2 uses a different work directory. So the unpack task
500 at step 3 will try to extract the downloaded archive and fail as it has
501 been deleted in step 2.
502
503 Note that this also applies to BitBake from concurrent processes when a
504 shared download directory (:term:`DL_DIR`) is setup.
530 505
531.. _ref-tasks-cleansstate: 506.. _ref-tasks-cleansstate:
532 507
@@ -535,41 +510,51 @@ task.
535 510
536Removes all output files and shared state 511Removes all output files and shared state
537(:ref:`sstate <overview-manual/concepts:shared state cache>`) cache for a 512(:ref:`sstate <overview-manual/concepts:shared state cache>`) cache for a
538target. Essentially, the ``do_cleansstate`` task is identical to the 513target. Essentially, the :ref:`ref-tasks-cleansstate` task is identical to the
539:ref:`ref-tasks-clean` task with the added removal of 514:ref:`ref-tasks-clean` task with the added removal of
540shared state (:ref:`sstate <overview-manual/concepts:shared state cache>`) 515shared state (:ref:`sstate <overview-manual/concepts:shared state cache>`)
541cache. 516cache.
542 517
543You can run this task using BitBake as follows: 518You can run this task using BitBake as follows::
544::
545 519
546 $ bitbake -c cleansstate recipe 520 $ bitbake -c cleansstate recipe
547 521
548When you run the ``do_cleansstate`` task, the OpenEmbedded build system 522When you run the :ref:`ref-tasks-cleansstate` task, the OpenEmbedded build system
549no longer uses any sstate. Consequently, building the recipe from 523no longer uses any sstate. Consequently, building the recipe from
550scratch is guaranteed. 524scratch is guaranteed.
551 525
552.. note:: 526.. note::
553 527
554 The ``do_cleansstate`` task cannot remove sstate from a remote sstate 528 Using :ref:`ref-tasks-cleansstate` with a shared :term:`SSTATE_DIR` is
529 not recommended because it could trigger an error during the build of a
530 separate BitBake instance. This is because the builds check sstate "up
531 front" but download the files later, so it if is deleted in the
532 meantime, it will cause an error but not a total failure as it will
533 rebuild it.
534
535 The reliable and preferred way to force a new build is to use ``bitbake
536 -f`` instead.
537
538.. note::
539
540 The :ref:`ref-tasks-cleansstate` task cannot remove sstate from a remote sstate
555 mirror. If you need to build a target from scratch using remote mirrors, use 541 mirror. If you need to build a target from scratch using remote mirrors, use
556 the "-f" option as follows: 542 the "-f" option as follows::
557 ::
558 543
559 $ bitbake -f -c do_cleansstate target 544 $ bitbake -f -c do_cleansstate target
560 545
561 546
562.. _ref-tasks-devpyshell: 547.. _ref-tasks-pydevshell:
563 548
564``do_devpyshell`` 549``do_pydevshell``
565----------------- 550-----------------
566 551
567Starts a shell in which an interactive Python interpreter allows you to 552Starts a shell in which an interactive Python interpreter allows you to
568interact with the BitBake build environment. From within this shell, you 553interact with the BitBake build environment. From within this shell, you
569can directly examine and set bits from the data store and execute 554can directly examine and set bits from the data store and execute
570functions as if within the BitBake environment. See the ":ref:`dev-manual/common-tasks:using a development python shell`" section in 555functions as if within the BitBake environment. See the ":ref:`dev-manual/python-development-shell:using a Python development shell`" section in
571the Yocto Project Development Tasks Manual for more information about 556the Yocto Project Development Tasks Manual for more information about
572using ``devpyshell``. 557using ``pydevshell``.
573 558
574.. _ref-tasks-devshell: 559.. _ref-tasks-devshell:
575 560
@@ -577,7 +562,7 @@ using ``devpyshell``.
577--------------- 562---------------
578 563
579Starts a shell whose environment is set up for development, debugging, 564Starts a shell whose environment is set up for development, debugging,
580or both. See the ":ref:`dev-manual/common-tasks:using a development shell`" section in the 565or both. See the ":ref:`dev-manual/development-shell:using a development shell`" section in the
581Yocto Project Development Tasks Manual for more information about using 566Yocto Project Development Tasks Manual for more information about using
582``devshell``. 567``devshell``.
583 568
@@ -620,10 +605,8 @@ information on live image types.
620``do_bundle_initramfs`` 605``do_bundle_initramfs``
621----------------------- 606-----------------------
622 607
623Combines an initial RAM disk (initramfs) image and kernel together to 608Combines an :term:`Initramfs` image and kernel together to
624form a single image. The 609form a single image.
625:term:`CONFIG_INITRAMFS_SOURCE` variable
626has some more information about these types of images.
627 610
628.. _ref-tasks-rootfs: 611.. _ref-tasks-rootfs:
629 612
@@ -642,8 +625,8 @@ information on how the root filesystem is created.
642 625
643Boots an image and performs runtime tests within the image. For 626Boots an image and performs runtime tests within the image. For
644information on automatically testing images, see the 627information on automatically testing images, see the
645":ref:`dev-manual/common-tasks:performing automated runtime testing`" 628":ref:`test-manual/runtime-testing:performing automated runtime testing`"
646section in the Yocto Project Development Tasks Manual. 629section in the Yocto Project Test Environment Manual.
647 630
648.. _ref-tasks-testimage_auto: 631.. _ref-tasks-testimage_auto:
649 632
@@ -655,8 +638,8 @@ after it has been built. This task is enabled when you set
655:term:`TESTIMAGE_AUTO` equal to "1". 638:term:`TESTIMAGE_AUTO` equal to "1".
656 639
657For information on automatically testing images, see the 640For information on automatically testing images, see the
658":ref:`dev-manual/common-tasks:performing automated runtime testing`" 641":ref:`test-manual/runtime-testing:performing automated runtime testing`"
659section in the Yocto Project Development Tasks Manual. 642section in the Yocto Project Test Environment Manual.
660 643
661Kernel-Related Tasks 644Kernel-Related Tasks
662==================== 645====================
@@ -687,8 +670,7 @@ changes made by the user with other methods (i.e. using
687(:ref:`ref-tasks-kernel_menuconfig`). Once the 670(:ref:`ref-tasks-kernel_menuconfig`). Once the
688file of differences is created, it can be used to create a config 671file of differences is created, it can be used to create a config
689fragment that only contains the differences. You can invoke this task 672fragment that only contains the differences. You can invoke this task
690from the command line as follows: 673from the command line as follows::
691::
692 674
693 $ bitbake linux-yocto -c diffconfig 675 $ bitbake linux-yocto -c diffconfig
694 676
@@ -703,7 +685,7 @@ section in the Yocto Project Linux Kernel Development Manual.
703 685
704Converts the newly unpacked kernel source into a form with which the 686Converts the newly unpacked kernel source into a form with which the
705OpenEmbedded build system can work. Because the kernel source can be 687OpenEmbedded build system can work. Because the kernel source can be
706fetched in several different ways, the ``do_kernel_checkout`` task makes 688fetched in several different ways, the :ref:`ref-tasks-kernel_checkout` task makes
707sure that subsequent tasks are given a clean working tree copy of the 689sure that subsequent tasks are given a clean working tree copy of the
708kernel with the correct branches checked out. 690kernel with the correct branches checked out.
709 691
@@ -714,12 +696,11 @@ kernel with the correct branches checked out.
714 696
715Validates the configuration produced by the 697Validates the configuration produced by the
716:ref:`ref-tasks-kernel_menuconfig` task. The 698:ref:`ref-tasks-kernel_menuconfig` task. The
717``do_kernel_configcheck`` task produces warnings when a requested 699:ref:`ref-tasks-kernel_configcheck` task produces warnings when a requested
718configuration does not appear in the final ``.config`` file or when you 700configuration does not appear in the final ``.config`` file or when you
719override a policy configuration in a hardware configuration fragment. 701override a policy configuration in a hardware configuration fragment.
720You can run this task explicitly and view the output by using the 702You can run this task explicitly and view the output by using the
721following command: 703following command::
722::
723 704
724 $ bitbake linux-yocto -c kernel_configcheck -f 705 $ bitbake linux-yocto -c kernel_configcheck -f
725 706
@@ -733,7 +714,7 @@ section in the Yocto Project Linux Kernel Development Manual.
733---------------------- 714----------------------
734 715
735After the kernel is patched by the :ref:`ref-tasks-patch` 716After the kernel is patched by the :ref:`ref-tasks-patch`
736task, the ``do_kernel_configme`` task assembles and merges all the 717task, the :ref:`ref-tasks-kernel_configme` task assembles and merges all the
737kernel config fragments into a merged configuration that can then be 718kernel config fragments into a merged configuration that can then be
738passed to the kernel configuration phase proper. This is also the time 719passed to the kernel configuration phase proper. This is also the time
739during which user-specified defconfigs are applied if present, and where 720during which user-specified defconfigs are applied if present, and where
@@ -750,13 +731,12 @@ tool, which you then use to modify the kernel configuration.
750 731
751.. note:: 732.. note::
752 733
753 You can also invoke this tool from the command line as follows: 734 You can also invoke this tool from the command line as follows::
754 ::
755 735
756 $ bitbake linux-yocto -c menuconfig 736 $ bitbake linux-yocto -c menuconfig
757 737
758 738
759See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 739See the ":ref:`kernel-dev/common:using ``menuconfig```"
760section in the Yocto Project Linux Kernel Development Manual for more 740section in the Yocto Project Linux Kernel Development Manual for more
761information on this configuration tool. 741information on this configuration tool.
762 742
@@ -767,7 +747,7 @@ information on this configuration tool.
767 747
768Collects all the features required for a given kernel build, whether the 748Collects all the features required for a given kernel build, whether the
769features come from :term:`SRC_URI` or from Git 749features come from :term:`SRC_URI` or from Git
770repositories. After collection, the ``do_kernel_metadata`` task 750repositories. After collection, the :ref:`ref-tasks-kernel_metadata` task
771processes the features into a series of config fragments and patches, 751processes the features into a series of config fragments and patches,
772which can then be applied by subsequent tasks such as 752which can then be applied by subsequent tasks such as
773:ref:`ref-tasks-patch` and 753:ref:`ref-tasks-patch` and
@@ -780,7 +760,7 @@ which can then be applied by subsequent tasks such as
780 760
781Runs ``make menuconfig`` for the kernel. For information on 761Runs ``make menuconfig`` for the kernel. For information on
782``menuconfig``, see the 762``menuconfig``, see the
783":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 763":ref:`kernel-dev/common:using ``menuconfig```"
784section in the Yocto Project Linux Kernel Development Manual. 764section in the Yocto Project Linux Kernel Development Manual.
785 765
786.. _ref-tasks-savedefconfig: 766.. _ref-tasks-savedefconfig:
@@ -793,8 +773,7 @@ instead of the default defconfig. The saved defconfig contains the
793differences between the default defconfig and the changes made by the 773differences between the default defconfig and the changes made by the
794user using other methods (i.e. the 774user using other methods (i.e. the
795:ref:`ref-tasks-kernel_menuconfig` task. You 775:ref:`ref-tasks-kernel_menuconfig` task. You
796can invoke the task using the following command: 776can invoke the task using the following command::
797::
798 777
799 $ bitbake linux-yocto -c savedefconfig 778 $ bitbake linux-yocto -c savedefconfig
800 779
@@ -839,6 +818,5 @@ sections from a size-sensitive configuration.
839After the kernel is unpacked but before it is patched, this task makes 818After the kernel is unpacked but before it is patched, this task makes
840sure that the machine and metadata branches as specified by the 819sure that the machine and metadata branches as specified by the
841:term:`SRCREV` variables actually exist on the specified 820:term:`SRCREV` variables actually exist on the specified
842branches. If these branches do not exist and 821branches. Otherwise, if :term:`AUTOREV` is not being used, the
843:term:`AUTOREV` is not being used, the 822:ref:`ref-tasks-validate_branches` task fails during the build.
844``do_validate_branches`` task fails during the build.
diff --git a/documentation/ref-manual/terms.rst b/documentation/ref-manual/terms.rst
index bf46148876..e25c714d9b 100644
--- a/documentation/ref-manual/terms.rst
+++ b/documentation/ref-manual/terms.rst
@@ -4,7 +4,7 @@
4Yocto Project Terms 4Yocto Project Terms
5******************* 5*******************
6 6
7Following is a list of terms and definitions users new to the Yocto Project 7Here is a list of terms and definitions users new to the Yocto Project
8development environment might find helpful. While some of these terms are 8development environment might find helpful. While some of these terms are
9universal, the list includes them just in case: 9universal, the list includes them just in case:
10 10
@@ -21,18 +21,17 @@ universal, the list includes them just in case:
21 21
22 Information in append files extends or overrides the information in the 22 Information in append files extends or overrides the information in the
23 similarly-named recipe file. For an example of an append file in use, see 23 similarly-named recipe file. For an example of an append file in use, see
24 the ":ref:`dev-manual/common-tasks:Using .bbappend Files in 24 the ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
25 Your Layer`" section in the Yocto Project Development Tasks Manual. 25 section in the Yocto Project Development Tasks Manual.
26 26
27 When you name an append file, you can use the "``%``" wildcard character 27 When you name an append file, you can use the "``%``" wildcard character
28 to allow for matching recipe names. For example, suppose you have an 28 to allow for matching recipe names. For example, suppose you have an
29 append file named as follows: 29 append file named as follows::
30 :: 30
31
32 busybox_1.21.%.bbappend 31 busybox_1.21.%.bbappend
33 32
34 That append file 33 That append file
35 would match any ``busybox_1.21.``\ x\ ``.bb`` version of the recipe. So, 34 would match any ``busybox_1.21.x.bb`` version of the recipe. So,
36 the append file would match any of the following recipe names: 35 the append file would match any of the following recipe names:
37 36
38 .. code-block:: shell 37 .. code-block:: shell
@@ -64,55 +63,121 @@ universal, the list includes them just in case:
64 This term refers to the area used by the OpenEmbedded build system for 63 This term refers to the area used by the OpenEmbedded build system for
65 builds. The area is created when you ``source`` the setup environment 64 builds. The area is created when you ``source`` the setup environment
66 script that is found in the Source Directory 65 script that is found in the Source Directory
67 (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). The 66 (i.e. :ref:`ref-manual/structure:``oe-init-build-env```). The
68 :term:`TOPDIR` variable points to the Build Directory. 67 :term:`TOPDIR` variable points to the :term:`Build Directory`.
69 68
70 You have a lot of flexibility when creating the Build Directory. 69 You have a lot of flexibility when creating the :term:`Build Directory`.
71 Following are some examples that show how to create the directory. The 70 Here are some examples that show how to create the directory. The
72 examples assume your :term:`Source Directory` is named ``poky``: 71 examples assume your :term:`Source Directory` is named ``poky``:
73 72
74 - Create the Build Directory inside your Source Directory and let 73 - Create the :term:`Build Directory` inside your Source Directory and let
75 the name of the Build Directory default to ``build``: 74 the name of the :term:`Build Directory` default to ``build``:
76 75
77 .. code-block:: shell 76 .. code-block:: shell
78 77
79 $ cd $HOME/poky 78 $ cd poky
80 $ source oe-init-build-env 79 $ source oe-init-build-env
81 80
82 - Create the Build Directory inside your home directory and 81 - Create the :term:`Build Directory` inside your home directory and
83 specifically name it ``test-builds``: 82 specifically name it ``test-builds``:
84 83
85 .. code-block:: shell 84 .. code-block:: shell
86 85
87 $ cd $HOME
88 $ source poky/oe-init-build-env test-builds 86 $ source poky/oe-init-build-env test-builds
89 87
90 - Provide a directory path and specifically name the Build 88 - Provide a directory path and specifically name the
91 Directory. Any intermediate folders in the pathname must exist. 89 :term:`Build Directory`. Any intermediate folders in the pathname
92 This next example creates a Build Directory named 90 must exist. This next example creates a :term:`Build Directory`
93 ``YP-&POKYVERSION;`` in your home directory within the existing 91 named ``YP-&DISTRO;`` within the existing directory ``mybuilds``:
94 directory ``mybuilds``:
95 92
96 .. code-block:: shell 93 .. code-block:: shell
97 94
98 $ cd $HOME 95 $ source poky/oe-init-build-env mybuilds/YP-&DISTRO;
99 $ source $HOME/poky/oe-init-build-env $HOME/mybuilds/YP-&POKYVERSION;
100 96
101 .. note:: 97 .. note::
102 98
103 By default, the Build Directory contains :term:`TMPDIR`, which is a 99 By default, the :term:`Build Directory` contains :term:`TMPDIR`, which is a
104 temporary directory the build system uses for its work. ``TMPDIR`` cannot 100 temporary directory the build system uses for its work. :term:`TMPDIR` cannot
105 be under NFS. Thus, by default, the Build Directory cannot be under 101 be under NFS. Thus, by default, the :term:`Build Directory` cannot be under
106 NFS. However, if you need the Build Directory to be under NFS, you can 102 NFS. However, if you need the :term:`Build Directory` to be under NFS, you can
107 set this up by setting ``TMPDIR`` in your ``local.conf`` file to use a local 103 set this up by setting :term:`TMPDIR` in your ``local.conf`` file to use a local
108 drive. Doing so effectively separates ``TMPDIR`` from :term:`TOPDIR`, which is the 104 drive. Doing so effectively separates :term:`TMPDIR` from :term:`TOPDIR`, which is the
109 Build Directory. 105 :term:`Build Directory`.
110 106
111 :term:`Build Host` 107 :term:`Build Host`
112 The system used to build images in a Yocto Project Development 108 The system used to build images in a Yocto Project Development
113 environment. The build system is sometimes referred to as the development 109 environment. The build system is sometimes referred to as the development
114 host. 110 host.
115 111
112 :term:`buildtools`
113 Build tools in binary form, providing required versions of development
114 tools (such as Git, GCC, Python and make), to run the OpenEmbedded build
115 system on a development host without such minimum versions.
116
117 See the ":ref:`system-requirements-buildtools`" paragraph in the
118 Reference Manual for details about downloading or building an archive
119 of such tools.
120
121 :term:`buildtools-extended`
122 A set of :term:`buildtools` binaries extended with additional development
123 tools, such as a required version of the GCC compiler to run the
124 OpenEmbedded build system.
125
126 See the ":ref:`system-requirements-buildtools`" paragraph in the
127 Reference Manual for details about downloading or building an archive
128 of such tools.
129
130 :term:`buildtools-make`
131 A variant of :term:`buildtools`, just providing the required
132 version of ``make`` to run the OpenEmbedded build system.
133
134 :term:`Built-in Fragment`
135 A built-in fragment is a specific kind of :term:`Configuration Fragment`
136 that affects the value of a single variable globally. :term:`Built-in
137 Fragments <Built-in Fragment>` do not require a separate configuration
138 file, but like a standard :term:`Configuration Fragment`, Built-in
139 Fragments can be enabled or disabled using the :oe_git:`bitbake-config-build
140 </bitbake/tree/bin/bitbake-config-build>` command-line utility.
141
142 When declared, a built-in fragment follows the following naming
143 convention::
144
145 <fragment>:<variable name>
146
147 Where:
148
149 - ``<fragment>`` is the name of the built-in fragment.
150 - ``<variable name>`` is the name of the variable to be modified by this
151 fragment.
152
153 For example::
154
155 machine:MACHINE
156
157 Will setup the ``machine`` Built-in Fragment for modifying the value of
158 the :term:`MACHINE` variable.
159
160 Setting the :term:`MACHINE` variable through this fragment must follow
161 this syntax::
162
163 machine/qemux86-64
164
165 This sets the value of :term:`MACHINE` to ``qemux86-64``.
166
167 In :term:`OpenEmbedded-Core (OE-Core)`, the list of available
168 :term:`Built-in Fragments <Built-in Fragment>` can be obtained from the
169 :term:`OE_FRAGMENTS_BUILTIN` variable.
170
171 For more details on fragments, see:
172
173 - The :doc:`/ref-manual/fragments` section of the Yocto Project Reference
174 Manual for a list of fragments the :term:`OpenEmbedded Build System`
175 supports, and a quick reference guide on how to manage fragments.
176
177 - The :doc:`/dev-manual/creating-fragments` section of the Yocto Project
178 Development Tasks Manual for details on how to create new fragments
179 in your build.
180
116 :term:`Classes` 181 :term:`Classes`
117 Files that provide for logic encapsulation and inheritance so that 182 Files that provide for logic encapsulation and inheritance so that
118 commonly used patterns can be defined once and then easily used in 183 commonly used patterns can be defined once and then easily used in
@@ -136,12 +201,72 @@ universal, the list includes them just in case:
136 only used when building for that target (e.g. the 201 only used when building for that target (e.g. the
137 :file:`machine/beaglebone.conf` configuration file defines variables for 202 :file:`machine/beaglebone.conf` configuration file defines variables for
138 the Texas Instruments ARM Cortex-A8 development board). 203 the Texas Instruments ARM Cortex-A8 development board).
204 :term:`Configuration Fragments <Configuration Fragment>` such as
205 :ref:`ref-fragments-core-yocto-sstate-mirror-cdn` define snippets of
206 configuration that can be enabled from the command-line.
207
208 :term:`Configuration Fragment`
209 A :term:`Configuration Fragment` (also called Standard :term:`Configuration
210 Fragment`) is a :term:`configuration file` that contains configuration
211 statements such as variable assignments, affecting the build at a
212 global-level when the fragment is enabled. By default, configuration
213 fragments are located in the :file:`conf/fragments/` directory of a
214 :term:`Layer`.
215
216 .. note::
217
218 Another form of fragment not to be confounded with Standard
219 :term:`Configuration Fragments <Configuration Fragment>` are
220 :term:`Built-in Fragments <Built-in Fragment>` which are used to assign
221 a single variable value globally.
222
223 A fragment :term:`configuration file` must contain a summary
224 (:term:`BB_CONF_FRAGMENT_SUMMARY`) and a description
225 (:term:`BB_CONF_FRAGMENT_DESCRIPTION`) explaining the purpose of the
226 fragment.
227
228 In :term:`OpenEmbedded-Core (OE-Core)`, the location of fragments and what
229 variables are required in a fragment is specified in :oe_git:`bitbake.conf
230 </openembedded-core/tree/meta/conf/bitbake.conf>` thanks to the
231 :ref:`addfragments <bitbake-user-manual/bitbake-user-manual-metadata:\`\`addfragments\`\`
232 directive>` directive and the :term:`OE_FRAGMENTS`,
233 :term:`OE_FRAGMENTS_METADATA_VARS` and :term:`OE_FRAGMENTS_BUILTIN`
234 variables.
235
236 Fragments can be listed, enabled and disabled with the
237 :oe_git:`bitbake-config-build </bitbake/tree/bin/bitbake-config-build>`
238 command-line utility.
239
240 For more details on fragments, see:
241
242 - The :doc:`/ref-manual/fragments` section of the Yocto Project Reference
243 Manual for a list of fragments the :term:`OpenEmbedded Build System`
244 supports, and a quick reference guide on how to manage fragments.
245
246 - The :doc:`/dev-manual/creating-fragments` section of the Yocto Project
247 Development Tasks Manual for details on how to create new fragments
248 in your build.
139 249
140 :term:`Container Layer` 250 :term:`Container Layer`
141 Layers that hold other layers. An example of a container layer is 251 A flexible definition that typically refers to a single Git checkout
142 OpenEmbedded's `meta-openembedded 252 which contains multiple (and typically related) sub-layers which can
143 <https://github.com/openembedded/meta-openembedded>`_ layer. The 253 be included independently in your project's ``bblayers.conf`` file.
144 ``meta-openembedded`` layer contains many ``meta-*`` layers. 254
255 In some cases, such as with OpenEmbedded's :oe_git:`meta-openembedded </meta-openembedded>`
256 layer, the top level ``meta-openembedded/`` directory is not itself an actual layer,
257 so you would never explicitly include it in a ``bblayers.conf`` file;
258 rather, you would include any number of its layer subdirectories, such as
259 :oe_git:`meta-oe </meta-openembedded/tree/meta-oe>`, :oe_git:`meta-python
260 </meta-openembedded/tree/meta-python>` and so on.
261
262 On the other hand, some container layers (such as
263 :yocto_git:`meta-security </meta-security>`)
264 have a top-level directory that is itself an actual layer, as well as
265 a variety of sub-layers, both of which could be included in your
266 ``bblayers.conf`` file.
267
268 In either case, the phrase "container layer" is simply used to describe
269 a directory structure which contains multiple valid OpenEmbedded layers.
145 270
146 :term:`Cross-Development Toolchain` 271 :term:`Cross-Development Toolchain`
147 In general, a cross-development toolchain is a collection of software 272 In general, a cross-development toolchain is a collection of software
@@ -179,6 +304,48 @@ universal, the list includes them just in case:
179 of the supported image types that the Yocto Project provides, see the 304 of the supported image types that the Yocto Project provides, see the
180 ":ref:`ref-manual/images:Images`" chapter. 305 ":ref:`ref-manual/images:Images`" chapter.
181 306
307 :term:`Initramfs`
308 An Initial RAM Filesystem (:term:`Initramfs`) is an optionally compressed
309 :wikipedia:`cpio <Cpio>` archive which is extracted
310 by the Linux kernel into RAM in a special :wikipedia:`tmpfs <Tmpfs>`
311 instance, used as the initial root filesystem.
312
313 This is a replacement for the legacy init RAM disk ("initrd")
314 technique, booting on an emulated block device in RAM, but being less
315 efficient because of the overhead of going through a filesystem and
316 having to duplicate accessed file contents in the file cache in RAM,
317 as for any block device.
318
319 .. note::
320
321 As far as bootloaders are concerned, :term:`Initramfs` and "initrd"
322 images are still copied to RAM in the same way. That's why most
323 most bootloaders refer to :term:`Initramfs` images as "initrd"
324 or "init RAM disk".
325
326 This kind of mechanism is typically used for two reasons:
327
328 - For booting the same kernel binary on multiple systems requiring
329 different device drivers. The :term:`Initramfs` image is then customized
330 for each type of system, to include the specific kernel modules
331 necessary to access the final root filesystem. This technique
332 is used on all GNU / Linux distributions for desktops and servers.
333
334 - For booting faster. As the root filesystem is extracted into RAM,
335 accessing the first user-space applications is very fast, compared
336 to having to initialize a block device, to access multiple blocks
337 from it, and to go through a filesystem having its own overhead.
338 For example, this allows to display a splashscreen very early,
339 and to later take care of mounting the final root filesystem and
340 loading less time-critical kernel drivers.
341
342 This cpio archive can either be loaded to RAM by the bootloader,
343 or be included in the kernel binary.
344
345 For information on creating and using an :term:`Initramfs`, see the
346 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
347 section in the Yocto Project Development Tasks Manual.
348
182 :term:`Layer` 349 :term:`Layer`
183 A collection of related recipes. Layers allow you to consolidate related 350 A collection of related recipes. Layers allow you to consolidate related
184 metadata to customize your build. Layers also isolate information used 351 metadata to customize your build. Layers also isolate information used
@@ -192,12 +359,18 @@ universal, the list includes them just in case:
192 ":ref:`overview-manual/yp-intro:The Yocto Project Layer 359 ":ref:`overview-manual/yp-intro:The Yocto Project Layer
193 Model`" section in the Yocto Project Overview and Concepts Manual. For 360 Model`" section in the Yocto Project Overview and Concepts Manual. For
194 more detailed information on layers, see the 361 more detailed information on layers, see the
195 ":ref:`dev-manual/common-tasks:Understanding and Creating 362 ":ref:`dev-manual/layers:Understanding and Creating
196 Layers`" section in the Yocto Project Development Tasks Manual. For a 363 Layers`" section in the Yocto Project Development Tasks Manual. For a
197 discussion specifically on BSP Layers, see the ":ref:`bsp-guide/bsp:BSP 364 discussion specifically on BSP Layers, see the ":ref:`bsp-guide/bsp:BSP
198 Layers`" section in the Yocto Project Board Support Packages (BSP) 365 Layers`" section in the Yocto Project Board Support Packages (BSP)
199 Developer's Guide. 366 Developer's Guide.
200 367
368 :term:`LTS`
369 This term means "Long Term Support", and in the context of the Yocto
370 Project, it corresponds to selected stable releases for which bug and
371 security fixes are provided for at least four years. See
372 the :ref:`ref-long-term-support-releases` section for details.
373
201 :term:`Metadata` 374 :term:`Metadata`
202 A key element of the Yocto Project is the Metadata that 375 A key element of the Yocto Project is the Metadata that
203 is used to construct a Linux distribution and is contained in the 376 is used to construct a Linux distribution and is contained in the
@@ -217,18 +390,11 @@ universal, the list includes them just in case:
217 :yocto_git:`yocto-kernel-cache </yocto-kernel-cache>` 390 :yocto_git:`yocto-kernel-cache </yocto-kernel-cache>`
218 Git repository. 391 Git repository.
219 392
220 :term:`OpenEmbedded-Core (OE-Core)` 393 :term:`Mixin`
221 OE-Core is metadata comprised of 394 A :term:`Mixin` layer is a layer which can be created by the community to
222 foundational recipes, classes, and associated files that are meant to 395 add a specific feature or support a new version of some package for an
223 be common among many different OpenEmbedded-derived systems, 396 :term:`LTS` release. See the :ref:`ref-long-term-support-releases`
224 including the Yocto Project. OE-Core is a curated subset of an 397 section for details.
225 original repository developed by the OpenEmbedded community that has
226 been pared down into a smaller, core set of continuously validated
227 recipes. The result is a tightly controlled and an quality-assured
228 core set of recipes.
229
230 You can see the Metadata in the ``meta`` directory of the Yocto
231 Project :yocto_git:`Source Repositories </poky>`.
232 398
233 :term:`OpenEmbedded Build System` 399 :term:`OpenEmbedded Build System`
234 The build system specific to the Yocto 400 The build system specific to the Yocto
@@ -244,6 +410,19 @@ universal, the list includes them just in case:
244 410
245 For some historical information about Poky, see the :term:`Poky` term. 411 For some historical information about Poky, see the :term:`Poky` term.
246 412
413 :term:`OpenEmbedded-Core (OE-Core)`
414 OE-Core is metadata comprised of
415 foundational recipes, classes, and associated files that are meant to
416 be common among many different OpenEmbedded-derived systems,
417 including the Yocto Project. OE-Core is a curated subset of an
418 original repository developed by the OpenEmbedded community that has
419 been pared down into a smaller, core set of continuously validated
420 recipes. The result is a tightly controlled and an quality-assured
421 core set of recipes.
422
423 You can see the Metadata in the ``meta`` directory of the Yocto
424 Project :yocto_git:`Source Repositories </poky>`.
425
247 :term:`Package` 426 :term:`Package`
248 In the context of the Yocto Project, this term refers to a 427 In the context of the Yocto Project, this term refers to a
249 recipe's packaged output produced by BitBake (i.e. a "baked recipe"). 428 recipe's packaged output produced by BitBake (i.e. a "baked recipe").
@@ -257,7 +436,7 @@ universal, the list includes them just in case:
257 your Linux distribution. 436 your Linux distribution.
258 437
259 Another point worth noting is that historically within the Yocto 438 Another point worth noting is that historically within the Yocto
260 Project, recipes were referred to as packages - thus, the existence 439 Project, recipes were referred to as packages --- thus, the existence
261 of several BitBake variables that are seemingly mis-named, (e.g. 440 of several BitBake variables that are seemingly mis-named, (e.g.
262 :term:`PR`, :term:`PV`, and 441 :term:`PR`, :term:`PV`, and
263 :term:`PE`). 442 :term:`PE`).
@@ -310,6 +489,23 @@ universal, the list includes them just in case:
310 :term:`build host<Build Host>` and other components, that can 489 :term:`build host<Build Host>` and other components, that can
311 work on specific hardware. 490 work on specific hardware.
312 491
492 :term:`SBOM`
493 This term means *Software Bill of Materials*. When you distribute
494 software, it offers a description of all the components you used,
495 their corresponding licenses, their dependencies, the changes that were
496 applied and the known vulnerabilities that were fixed.
497
498 This can be used by the recipients of the software to assess
499 their exposure to license compliance and security vulnerability issues.
500
501 See the :wikipedia:`Software Supply Chain <Software_supply_chain>`
502 article on Wikipedia for more details.
503
504 The OpenEmbedded Build System can generate such documentation for your
505 project, in :term:`SPDX` format, based on all the metadata it used to
506 build the software images. See the ":ref:`dev-manual/sbom:creating
507 a software bill of materials`" section of the Development Tasks manual.
508
313 :term:`Source Directory` 509 :term:`Source Directory`
314 This term refers to the directory structure 510 This term refers to the directory structure
315 created as a result of creating a local copy of the ``poky`` Git 511 created as a result of creating a local copy of the ``poky`` Git
@@ -344,19 +540,19 @@ universal, the list includes them just in case:
344 repository results in a local Git repository whose top-level folder 540 repository results in a local Git repository whose top-level folder
345 is also named "poky". 541 is also named "poky".
346 542
347 While it is not recommended that you use tarball expansion to set up 543 While it is not recommended that you use tarball extraction to set up
348 the Source Directory, if you do, the top-level directory name of the 544 the Source Directory, if you do, the top-level directory name of the
349 Source Directory is derived from the Yocto Project release tarball. 545 Source Directory is derived from the Yocto Project release tarball.
350 For example, downloading and unpacking 546 For example, downloading and unpacking poky tarballs from
351 :yocto_dl:`/releases/yocto/&DISTRO_REL_TAG;/&YOCTO_POKY;.tar.bz2` 547 :yocto_dl:`/releases/yocto/&DISTRO_REL_LATEST_TAG;/`
352 results in a Source Directory whose root folder is named 548 results in a Source Directory whose root folder is named poky.
353 ``&YOCTO_POKY;``. 549
354 550
355 It is important to understand the differences between the Source 551 It is important to understand the differences between the Source
356 Directory created by unpacking a released tarball as compared to 552 Directory created by unpacking a released tarball as compared to
357 cloning ``git://git.yoctoproject.org/poky``. When you unpack a 553 cloning ``git://git.yoctoproject.org/poky``. When you unpack a
358 tarball, you have an exact copy of the files based on the time of 554 tarball, you have an exact copy of the files based on the time of
359 release - a fixed release point. Any changes you make to your local 555 release --- a fixed release point. Any changes you make to your local
360 files in the Source Directory are on top of the release and will 556 files in the Source Directory are on top of the release and will
361 remain local only. On the other hand, when you clone the ``poky`` Git 557 remain local only. On the other hand, when you clone the ``poky`` Git
362 repository, you have an active development repository with access to 558 repository, you have an active development repository with access to
@@ -370,11 +566,53 @@ universal, the list includes them just in case:
370 ":ref:`overview-manual/development-environment:repositories, tags, and branches`" 566 ":ref:`overview-manual/development-environment:repositories, tags, and branches`"
371 section in the Yocto Project Overview and Concepts Manual. 567 section in the Yocto Project Overview and Concepts Manual.
372 568
569 :term:`SPDX`
570 This term means *Software Package Data Exchange*, and is used as an open
571 standard for providing a *Software Bill of Materials* (:term:`SBOM`).
572 This standard is developed through a `Linux Foundation project
573 <https://spdx.dev/>`__ and is used by the OpenEmbedded Build System to
574 provide an :term:`SBOM` associated to each software image.
575
576 For details, see Wikipedia's :wikipedia:`SPDX page <Software_Package_Data_Exchange>`
577 and the ":ref:`dev-manual/sbom:creating a software bill of materials`"
578 section of the Development Tasks manual.
579
580 :term:`Sysroot`
581 When cross-compiling, the target file system may be differently laid
582 out and contain different things compared to the host system. The concept
583 of a *sysroot* is directory which looks like the target filesystem and
584 can be used to cross-compile against.
585
586 In the context of cross-compiling toolchains, a *sysroot*
587 typically contains C library and kernel headers, plus the
588 compiled binaries for the C library. A *multilib toolchain*
589 can contain multiple variants of the C library binaries,
590 each compiled for a target instruction set (such as ``armv5``,
591 ``armv7`` and ``armv8``), and possibly optimized for a specific CPU core.
592
593 In the more specific context of the OpenEmbedded build System and
594 of the Yocto Project, each recipe has two sysroots:
595
596 - A *target sysroot* contains all the **target** libraries and headers
597 needed to build the recipe.
598
599 - A *native sysroot* contains all the **host** files and executables
600 needed to build the recipe.
601
602 See the :term:`SYSROOT_* <SYSROOT_DESTDIR>` variables controlling
603 how sysroots are created and stored.
604
373 :term:`Task` 605 :term:`Task`
374 A unit of execution for BitBake (e.g. 606 A per-recipe unit of execution for BitBake (e.g.
375 :ref:`ref-tasks-compile`, 607 :ref:`ref-tasks-compile`,
376 :ref:`ref-tasks-fetch`, 608 :ref:`ref-tasks-fetch`,
377 :ref:`ref-tasks-patch`, and so forth). 609 :ref:`ref-tasks-patch`, and so forth).
610 One of the major benefits of the build system is that, since each
611 recipe will typically spawn the execution of numerous tasks,
612 it is entirely possible that many tasks can execute in parallel,
613 either tasks from separate recipes or independent tasks within
614 the same recipe, potentially up to the parallelism of your
615 build system.
378 616
379 :term:`Toaster` 617 :term:`Toaster`
380 A web interface to the Yocto Project's :term:`OpenEmbedded Build System`. 618 A web interface to the Yocto Project's :term:`OpenEmbedded Build System`.
@@ -385,7 +623,7 @@ universal, the list includes them just in case:
385 623
386 :term:`Upstream` 624 :term:`Upstream`
387 A reference to source code or repositories that are not 625 A reference to source code or repositories that are not
388 local to the development system but located in a master area that is 626 local to the development system but located in a remote area that is
389 controlled by the maintainer of the source code. For example, in 627 controlled by the maintainer of the source code. For example, in
390 order for a developer to work on a particular piece of code, they 628 order for a developer to work on a particular piece of code, they
391 need to first get a copy of it from an "upstream" source. 629 need to first get a copy of it from an "upstream" source.
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index 2cb37b6a2b..591c03028c 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -7,16 +7,23 @@ Variables Glossary
7This chapter lists common variables used in the OpenEmbedded build 7This chapter lists common variables used in the OpenEmbedded build
8system and gives an overview of their function and contents. 8system and gives an overview of their function and contents.
9 9
10..
11 check_glossary_begin
12
10:term:`A <ABIEXTENSION>` :term:`B` :term:`C <CACHE>` 13:term:`A <ABIEXTENSION>` :term:`B` :term:`C <CACHE>`
11:term:`D` :term:`E <EFI_PROVIDER>` :term:`F <FEATURE_PACKAGES>` 14:term:`D` :term:`E <EFI_ARCH>` :term:`F <FAKEROOT>`
12:term:`G <GCCPIE>` :term:`H <HOMEPAGE>` :term:`I <ICECC_DISABLED>` 15:term:`G <GCCPIE>` :term:`H <HGDIR>` :term:`I <IMAGE_BASENAME>`
13:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>` 16:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>`
14:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P` 17:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P`
15:term:`R <RANLIB>` :term:`S` :term:`T` 18:term:`Q <QA_EMPTY_DIRS>` :term:`R <RANLIB>` :term:`S` :term:`T`
16:term:`U <UBOOT_CONFIG>` :term:`V <VOLATILE_LOG_DIR>` 19:term:`U <UBOOT_BINARY>` :term:`V <VIRTUAL-RUNTIME>`
17:term:`W <WARN_QA>` :term:`X <XSERVER>` 20:term:`W <WARN_QA>` :term:`X <XSERVER>` :term:`Z <ZSTD_COMPRESSION_LEVEL>`
21
22..
23 check_glossary_end
18 24
19.. glossary:: 25.. glossary::
26 :sorted:
20 27
21 :term:`ABIEXTENSION` 28 :term:`ABIEXTENSION`
22 Extension to the Application Binary Interface (ABI) field of the GNU 29 Extension to the Application Binary Interface (ABI) field of the GNU
@@ -24,8 +31,7 @@ system and gives an overview of their function and contents.
24 31
25 ABI extensions are set in the machine include files. For example, the 32 ABI extensions are set in the machine include files. For example, the
26 ``meta/conf/machine/include/arm/arch-arm.inc`` file sets the 33 ``meta/conf/machine/include/arm/arch-arm.inc`` file sets the
27 following extension: 34 following extension::
28 ::
29 35
30 ABIEXTENSION = "eabi" 36 ABIEXTENSION = "eabi"
31 37
@@ -37,12 +43,11 @@ system and gives an overview of their function and contents.
37 requirement on the existence of the package. 43 requirement on the existence of the package.
38 44
39 Like all package-controlling variables, you must always use them in 45 Like all package-controlling variables, you must always use them in
40 conjunction with a package name override, as in: 46 conjunction with a package name override, as in::
41 ::
42 47
43 ALLOW_EMPTY_${PN} = "1" 48 ALLOW_EMPTY:${PN} = "1"
44 ALLOW_EMPTY_${PN}-dev = "1" 49 ALLOW_EMPTY:${PN}-dev = "1"
45 ALLOW_EMPTY_${PN}-staticdev = "1" 50 ALLOW_EMPTY:${PN}-staticdev = "1"
46 51
47 :term:`ALTERNATIVE` 52 :term:`ALTERNATIVE`
48 Lists commands in a package that need an alternative binary naming 53 Lists commands in a package that need an alternative binary naming
@@ -51,25 +56,22 @@ system and gives an overview of their function and contents.
51 alternatives system to create a different binary naming scheme so the 56 alternatives system to create a different binary naming scheme so the
52 commands can co-exist. 57 commands can co-exist.
53 58
54 To use the variable, list out the package's commands that also exist 59 To use the variable, list out the package's commands that are also
55 as part of another package. For example, if the ``busybox`` package 60 provided by another package. For example, if the ``busybox`` package
56 has four commands that also exist as part of another package, you 61 has four such commands, you identify them as follows::
57 identify them as follows:
58 ::
59 62
60 ALTERNATIVE_busybox = "sh sed test bracket" 63 ALTERNATIVE:busybox = "sh sed test bracket"
61 64
62 For more information on the alternatives system, see the 65 For more information on the alternatives system, see the
63 ":ref:`update-alternatives.bbclass <ref-classes-update-alternatives>`" 66 ":ref:`ref-classes-update-alternatives`"
64 section. 67 section.
65 68
66 :term:`ALTERNATIVE_LINK_NAME` 69 :term:`ALTERNATIVE_LINK_NAME`
67 Used by the alternatives system to map duplicated commands to actual 70 Used by the alternatives system to map duplicated commands to actual
68 locations. For example, if the ``bracket`` command provided by the 71 locations. For example, if the ``bracket`` command provided by the
69 ``busybox`` package is duplicated through another package, you must 72 ``busybox`` package is duplicated through another package, you must
70 use the ``ALTERNATIVE_LINK_NAME`` variable to specify the actual 73 use the :term:`ALTERNATIVE_LINK_NAME` variable to specify the actual
71 location: 74 location::
72 ::
73 75
74 ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/[" 76 ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/["
75 77
@@ -78,10 +80,10 @@ system and gives an overview of their function and contents.
78 80
79 .. note:: 81 .. note::
80 82
81 If ``ALTERNATIVE_LINK_NAME`` is not defined, it defaults to ``${bindir}/name``. 83 If :term:`ALTERNATIVE_LINK_NAME` is not defined, it defaults to ``${bindir}/name``.
82 84
83 For more information on the alternatives system, see the 85 For more information on the alternatives system, see the
84 ":ref:`update-alternatives.bbclass <ref-classes-update-alternatives>`" 86 ":ref:`ref-classes-update-alternatives`"
85 section. 87 section.
86 88
87 :term:`ALTERNATIVE_PRIORITY` 89 :term:`ALTERNATIVE_PRIORITY`
@@ -90,15 +92,14 @@ system and gives an overview of their function and contents.
90 default regardless of the command name or package, a default for 92 default regardless of the command name or package, a default for
91 specific duplicated commands regardless of the package, or a default 93 specific duplicated commands regardless of the package, or a default
92 for specific commands tied to particular packages. Here are the 94 for specific commands tied to particular packages. Here are the
93 available syntax forms: 95 available syntax forms::
94 ::
95 96
96 ALTERNATIVE_PRIORITY = "priority" 97 ALTERNATIVE_PRIORITY = "priority"
97 ALTERNATIVE_PRIORITY[name] = "priority" 98 ALTERNATIVE_PRIORITY[name] = "priority"
98 ALTERNATIVE_PRIORITY_pkg[name] = "priority" 99 ALTERNATIVE_PRIORITY_pkg[name] = "priority"
99 100
100 For more information on the alternatives system, see the 101 For more information on the alternatives system, see the
101 ":ref:`update-alternatives.bbclass <ref-classes-update-alternatives>`" 102 ":ref:`ref-classes-update-alternatives`"
102 section. 103 section.
103 104
104 :term:`ALTERNATIVE_TARGET` 105 :term:`ALTERNATIVE_TARGET`
@@ -107,8 +108,7 @@ system and gives an overview of their function and contents.
107 default location for all duplicated commands regardless of the 108 default location for all duplicated commands regardless of the
108 command name or package, a default for specific duplicated commands 109 command name or package, a default for specific duplicated commands
109 regardless of the package, or a default for specific commands tied to 110 regardless of the package, or a default for specific commands tied to
110 particular packages. Here are the available syntax forms: 111 particular packages. Here are the available syntax forms::
111 ::
112 112
113 ALTERNATIVE_TARGET = "target" 113 ALTERNATIVE_TARGET = "target"
114 ALTERNATIVE_TARGET[name] = "target" 114 ALTERNATIVE_TARGET[name] = "target"
@@ -116,11 +116,11 @@ system and gives an overview of their function and contents.
116 116
117 .. note:: 117 .. note::
118 118
119 If ``ALTERNATIVE_TARGET`` is not defined, it inherits the value 119 If :term:`ALTERNATIVE_TARGET` is not defined, it inherits the value
120 from the :term:`ALTERNATIVE_LINK_NAME` variable. 120 from the :term:`ALTERNATIVE_LINK_NAME` variable.
121 121
122 If ``ALTERNATIVE_LINK_NAME`` and ``ALTERNATIVE_TARGET`` are the 122 If :term:`ALTERNATIVE_LINK_NAME` and :term:`ALTERNATIVE_TARGET` are the
123 same, the target for ``ALTERNATIVE_TARGET`` has "``.{BPN}``" 123 same, the target for :term:`ALTERNATIVE_TARGET` has "``.{BPN}``"
124 appended to it. 124 appended to it.
125 125
126 Finally, if the file referenced has not been renamed, the 126 Finally, if the file referenced has not been renamed, the
@@ -129,38 +129,34 @@ system and gives an overview of their function and contents.
129 task while retaining support for the command if necessary. 129 task while retaining support for the command if necessary.
130 130
131 For more information on the alternatives system, see the 131 For more information on the alternatives system, see the
132 ":ref:`update-alternatives.bbclass <ref-classes-update-alternatives>`" 132 ":ref:`ref-classes-update-alternatives`" section.
133 section.
134 133
135 :term:`ANY_OF_DISTRO_FEATURES` 134 :term:`ANY_OF_DISTRO_FEATURES`
136 When inheriting the 135 When inheriting the :ref:`ref-classes-features_check`
137 :ref:`features_check <ref-classes-features_check>`
138 class, this variable identifies a list of distribution features where 136 class, this variable identifies a list of distribution features where
139 at least one must be enabled in the current configuration in order 137 at least one must be enabled in the current configuration in order
140 for the OpenEmbedded build system to build the recipe. In other words, 138 for the OpenEmbedded build system to build the recipe. In other words,
141 if none of the features listed in ``ANY_OF_DISTRO_FEATURES`` 139 if none of the features listed in :term:`ANY_OF_DISTRO_FEATURES`
142 appear in ``DISTRO_FEATURES`` within the current configuration, then 140 appear in :term:`DISTRO_FEATURES` within the current configuration, then
143 the recipe will be skipped, and if the build system attempts to build 141 the recipe will be skipped, and if the build system attempts to build
144 the recipe then an error will be triggered. 142 the recipe then an error will be triggered.
145
146 143
147 :term:`APPEND` 144 :term:`APPEND`
148 An override list of append strings for each target specified with 145 An override list of append strings for each target specified with
149 :term:`LABELS`. 146 :term:`LABELS`.
150 147
151 See the :ref:`grub-efi <ref-classes-grub-efi>` class for more 148 See the :ref:`ref-classes-grub-efi` class for more
152 information on how this variable is used. 149 information on how this variable is used.
153 150
154 :term:`AR` 151 :term:`AR`
155 The minimal command and arguments used to run ``ar``. 152 The minimal command and arguments used to run :manpage:`ar <ar(1)>`.
156 153
157 :term:`ARCHIVER_MODE` 154 :term:`ARCHIVER_MODE`
158 When used with the :ref:`archiver <ref-classes-archiver>` class, 155 When used with the :ref:`ref-classes-archiver` class,
159 determines the type of information used to create a released archive. 156 determines the type of information used to create a released archive.
160 You can use this variable to create archives of patched source, 157 You can use this variable to create archives of patched source,
161 original source, configured source, and so forth by employing the 158 original source, configured source, and so forth by employing the
162 following variable flags (varflags): 159 following variable flags (varflags)::
163 ::
164 160
165 ARCHIVER_MODE[src] = "original" # Uses original (unpacked) source files. 161 ARCHIVER_MODE[src] = "original" # Uses original (unpacked) source files.
166 ARCHIVER_MODE[src] = "patched" # Uses patched source files. This is the default. 162 ARCHIVER_MODE[src] = "patched" # Uses patched source files. This is the default.
@@ -175,14 +171,15 @@ system and gives an overview of their function and contents.
175 ``meta/classes/archiver.bbclass`` file in the :term:`Source Directory`. 171 ``meta/classes/archiver.bbclass`` file in the :term:`Source Directory`.
176 172
177 :term:`AS` 173 :term:`AS`
178 Minimal command and arguments needed to run the assembler. 174 Minimal command and arguments needed to run the :manpage:`assembler
175 <as(1)>`.
179 176
180 :term:`ASSUME_PROVIDED` 177 :term:`ASSUME_PROVIDED`
181 Lists recipe names (:term:`PN` values) BitBake does not 178 Lists recipe names (:term:`PN` values) BitBake does not
182 attempt to build. Instead, BitBake assumes these recipes have already 179 attempt to build. Instead, BitBake assumes these recipes have already
183 been built. 180 been built.
184 181
185 In OpenEmbedded-Core, ``ASSUME_PROVIDED`` mostly specifies native 182 In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native
186 tools that should not be built. An example is ``git-native``, which 183 tools that should not be built. An example is ``git-native``, which
187 when specified, allows for the Git binary from the host to be used 184 when specified, allows for the Git binary from the host to be used
188 rather than building ``git-native``. 185 rather than building ``git-native``.
@@ -193,65 +190,52 @@ system and gives an overview of their function and contents.
193 system. Separate multiple entries using spaces. 190 system. Separate multiple entries using spaces.
194 191
195 As an example, use the following form to add an ``shlib`` provider of 192 As an example, use the following form to add an ``shlib`` provider of
196 shlibname in packagename with the optional version: 193 shlibname in packagename with the optional version::
197 ::
198 194
199 shlibname:packagename[_version] 195 shlibname:packagename[_version]
200 196
201 Here is an example that adds a shared library named ``libEGL.so.1`` 197 Here is an example that adds a shared library named ``libEGL.so.1``
202 as being provided by the ``libegl-implementation`` package: 198 as being provided by the ``libegl-implementation`` package::
203 ::
204 199
205 ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation" 200 ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation"
206 201
207 :term:`AUTHOR`
208 The email address used to contact the original author or authors in
209 order to send patches and forward bugs.
210
211 :term:`AUTO_LIBNAME_PKGS` 202 :term:`AUTO_LIBNAME_PKGS`
212 When the :ref:`debian <ref-classes-debian>` class is inherited, 203 When the :ref:`ref-classes-debian` class is inherited,
213 which is the default behavior, ``AUTO_LIBNAME_PKGS`` specifies which 204 which is the default behavior, :term:`AUTO_LIBNAME_PKGS` specifies which
214 packages should be checked for libraries and renamed according to 205 packages should be checked for libraries and renamed according to
215 Debian library package naming. 206 Debian library package naming.
216 207
217 The default value is "${PACKAGES}", which causes the debian class to 208 The default value is "${PACKAGES}", which causes the
218 act on all packages that are explicitly generated by the recipe. 209 :ref:`ref-classes-debian` class to act on all packages that are
210 explicitly generated by the recipe.
219 211
220 :term:`AUTO_SYSLINUXMENU` 212 :term:`AUTO_SYSLINUXMENU`
221 Enables creating an automatic menu for the syslinux bootloader. You 213 Enables creating an automatic menu for the syslinux bootloader. You
222 must set this variable in your recipe. The 214 must set this variable in your recipe. The
223 :ref:`syslinux <ref-classes-syslinux>` class checks this variable. 215 :ref:`ref-classes-syslinux` class checks this variable.
224 216
225 :term:`AUTOREV` 217 :term:`AUTOREV`
226 When ``SRCREV`` is set to the value of this variable, it specifies to 218 When :term:`SRCREV` is set to the value of this variable, it specifies to
227 use the latest source revision in the repository. Here is an example: 219 use the latest source revision in the repository. Here is an example::
228 ::
229 220
230 SRCREV = "${AUTOREV}" 221 SRCREV = "${AUTOREV}"
231 222
232 If you use the previous statement to retrieve the latest version of 223 If you use the previous statement to retrieve the latest version of
233 software, you need to be sure :term:`PV` contains 224 software, you need to make sure :term:`PV` contains the ``+`` sign so
234 ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you 225 :term:`bitbake` includes source control information to :term:`PKGV` when
235 have a kernel recipe that inherits the 226 packaging the recipe. For example::
236 :ref:`kernel <ref-classes-kernel>` class and you use the previous 227
237 statement. In this example, ``${SRCPV}`` does not automatically get 228 PV = "6.10.y+git"
238 into ``PV``. Consequently, you need to change ``PV`` in your recipe
239 so that it does contain ``${SRCPV}``.
240 229
241 For more information see the 230 For more information see the
242 ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`" 231 ":ref:`dev-manual/packages:automatically incrementing a package version number`"
243 section in the Yocto Project Development Tasks Manual. 232 section in the Yocto Project Development Tasks Manual.
244 233
245 :term:`AVAILABLE_LICENSES` 234 :term:`AUTOTOOLS_SCRIPT_PATH`
246 List of licenses found in the directories specified by 235 When using the :ref:`ref-classes-autotools` class, the
247 :term:`COMMON_LICENSE_DIR` and 236 :term:`AUTOTOOLS_SCRIPT_PATH` variable stores the location of the
248 :term:`LICENSE_PATH`. 237 different scripts used by the Autotools build system. The default
249 238 value for this variable is :term:`S`.
250 .. note::
251
252 It is assumed that all changes to ``COMMON_LICENSE_DIR`` and
253 ``LICENSE_PATH`` have been done before ``AVAILABLE_LICENSES``
254 is defined (in :ref:`ref-classes-license`).
255 239
256 :term:`AVAILTUNES` 240 :term:`AVAILTUNES`
257 The list of defined CPU and Application Binary Interface (ABI) 241 The list of defined CPU and Application Binary Interface (ABI)
@@ -261,26 +245,36 @@ system and gives an overview of their function and contents.
261 The list simply presents the tunes that are available. Not all tunes 245 The list simply presents the tunes that are available. Not all tunes
262 may be compatible with a particular machine configuration, or with 246 may be compatible with a particular machine configuration, or with
263 each other in a 247 each other in a
264 :ref:`Multilib <dev-manual/common-tasks:combining multiple versions of library files into one image>` 248 :ref:`Multilib <dev-manual/libraries:combining multiple versions of library files into one image>`
265 configuration. 249 configuration.
266 250
267 To add a tune to the list, be sure to append it with spaces using the 251 To add a tune to the list, be sure to append it with spaces using the
268 "+=" BitBake operator. Do not simply replace the list by using the 252 "+=" BitBake operator. Do not simply replace the list by using the
269 "=" operator. See the 253 "=" operator. See the
270 ":ref:`Basic Syntax <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:basic syntax>`" section in the BitBake 254 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake
271 User Manual for more information. 255 User Manual for more information.
272 256
257 :term:`AZ_SAS`
258 Azure Storage Shared Access Signature, when using the
259 :ref:`Azure Storage fetcher (az://) <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
260 This variable can be defined to be used by the fetcher to authenticate
261 and gain access to non-public artifacts::
262
263 AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
264
265 For more information see Microsoft's Azure Storage documentation at
266 https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
267
273 :term:`B` 268 :term:`B`
274 The directory within the :term:`Build Directory` in 269 The directory within the :term:`Build Directory` in which the
275 which the OpenEmbedded build system places generated objects during a 270 OpenEmbedded build system places generated objects during a recipe's
276 recipe's build process. By default, this directory is the same as the 271 build process. By default, this directory is the same as the
277 :term:`S` directory, which is defined as: 272 :term:`S` directory, which is defined as::
278 ::
279 273
280 S = "${WORKDIR}/${BP}" 274 S = "${UNPACKDIR}/${BP}"
281 275
282 You can separate the (``S``) directory and the directory pointed to 276 You can separate the (:term:`S`) directory and the directory pointed to
283 by the ``B`` variable. Most Autotools-based recipes support 277 by the :term:`B` variable. Most Autotools-based recipes support
284 separating these directories. The build system defaults to using 278 separating these directories. The build system defaults to using
285 separate directories for ``gcc`` and some kernel recipes. 279 separate directories for ``gcc`` and some kernel recipes.
286 280
@@ -289,17 +283,15 @@ system and gives an overview of their function and contents.
289 packages are packages installed only through the 283 packages are packages installed only through the
290 :term:`RRECOMMENDS` variable. You can prevent any 284 :term:`RRECOMMENDS` variable. You can prevent any
291 of these "recommended" packages from being installed by listing them 285 of these "recommended" packages from being installed by listing them
292 with the ``BAD_RECOMMENDATIONS`` variable: 286 with the :term:`BAD_RECOMMENDATIONS` variable::
293 ::
294 287
295 BAD_RECOMMENDATIONS = "package_name package_name package_name ..." 288 BAD_RECOMMENDATIONS = "package_name package_name package_name ..."
296 289
297 You can set this variable globally in your ``local.conf`` file or you 290 You can set this variable globally in your ``local.conf`` file or you
298 can attach it to a specific image recipe by using the recipe name 291 can attach it to a specific image recipe by using the recipe name
299 override: 292 override::
300 ::
301 293
302 BAD_RECOMMENDATIONS_pn-target_image = "package_name" 294 BAD_RECOMMENDATIONS:pn-target_image = "package_name"
303 295
304 It is important to realize that if you choose to not install packages 296 It is important to realize that if you choose to not install packages
305 using this variable and some other packages are dependent on them 297 using this variable and some other packages are dependent on them
@@ -307,21 +299,50 @@ system and gives an overview of their function and contents.
307 variable), the OpenEmbedded build system ignores your request and 299 variable), the OpenEmbedded build system ignores your request and
308 will install the packages to avoid dependency errors. 300 will install the packages to avoid dependency errors.
309 301
310 Support for this variable exists only when using the IPK and RPM 302 This variable is supported only when using the IPK and RPM
311 packaging backend. Support does not exist for DEB. 303 packaging backends. DEB is not supported.
312 304
313 See the :term:`NO_RECOMMENDATIONS` and the 305 See the :term:`NO_RECOMMENDATIONS` and the
314 :term:`PACKAGE_EXCLUDE` variables for related 306 :term:`PACKAGE_EXCLUDE` variables for related
315 information. 307 information.
316 308
309 :term:`BAREBOX_BINARY`
310 When using the :ref:`ref-classes-barebox` class, this variable allows you
311 to specify a particular binary that should be deployed and installed.
312
313 The barebox build system can build multiple barebox binaries at once.
314 By default, all built binaries will be deployed and installed under their
315 original name.
316
317 Here is an example usage of this variable::
318
319 BAREBOX_BINARY = "barebox-boundarydevices-imx6dl-nitrogen6x-1g.img"
320
321 :term:`BAREBOX_CONFIG`
322 When using the :ref:`ref-classes-barebox` class, this variable allows you
323 to specify the name of the barebox defconfig to build.
324 The name must be a defconfig file known to the barebox build environment.
325 This variable is mainly useful for generic use cases where a dedicated
326 configuration is not required.
327 The :ref:`ref-classes-barebox` class itself already sets it for some QEMU
328 machines::
329
330 BAREBOX_CONFIG:qemuarm = "multi_v7_defconfig"
331 BAREBOX_CONFIG:qemuarm64 = "multi_v8_defconfig"
332 BAREBOX_CONFIG:qemux86-64 = "efi_defconfig"
333
334 Except for these, the default value of :term:`BAREBOX_CONFIG` is empty.
335 For more information on how to provide a barebox configuration, see the
336 :ref:`ref-classes-barebox` class.
337
317 :term:`BASE_LIB` 338 :term:`BASE_LIB`
318 The library directory name for the CPU or Application Binary 339 The library directory name for the CPU or Application Binary
319 Interface (ABI) tune. The ``BASE_LIB`` applies only in the Multilib 340 Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib
320 context. See the ":ref:`dev-manual/common-tasks:combining multiple versions of library files into one image`" 341 context. See the ":ref:`dev-manual/libraries:combining multiple versions of library files into one image`"
321 section in the Yocto Project Development Tasks Manual for information 342 section in the Yocto Project Development Tasks Manual for information
322 on Multilib. 343 on Multilib.
323 344
324 The ``BASE_LIB`` variable is defined in the machine include files in 345 The :term:`BASE_LIB` variable is defined in the machine include files in
325 the :term:`Source Directory`. If Multilib is not 346 the :term:`Source Directory`. If Multilib is not
326 being used, the value defaults to "lib". 347 being used, the value defaults to "lib".
327 348
@@ -331,16 +352,15 @@ system and gives an overview of their function and contents.
331 352
332 :term:`BB_ALLOWED_NETWORKS` 353 :term:`BB_ALLOWED_NETWORKS`
333 Specifies a space-delimited list of hosts that the fetcher is allowed 354 Specifies a space-delimited list of hosts that the fetcher is allowed
334 to use to obtain the required source code. Following are 355 to use to obtain the required source code. Here are
335 considerations surrounding this variable: 356 considerations surrounding this variable:
336 357
337 - This host list is only used if ``BB_NO_NETWORK`` is either not set 358 - This host list is only used if :term:`BB_NO_NETWORK` is either not set
338 or set to "0". 359 or set to "0".
339 360
340 - Limited support for wildcard matching against the beginning of 361 - There is limited support for wildcard matching against the beginning of
341 host names exists. For example, the following setting matches 362 host names. For example, the following setting matches
342 ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``. 363 ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``::
343 ::
344 364
345 BB_ALLOWED_NETWORKS = "*.gnu.org" 365 BB_ALLOWED_NETWORKS = "*.gnu.org"
346 366
@@ -359,40 +379,60 @@ system and gives an overview of their function and contents.
359 379
360 - Attempts to access networks not in the host list cause a failure. 380 - Attempts to access networks not in the host list cause a failure.
361 381
362 Using ``BB_ALLOWED_NETWORKS`` in conjunction with 382 Using :term:`BB_ALLOWED_NETWORKS` in conjunction with
363 :term:`PREMIRRORS` is very useful. Adding the host 383 :term:`PREMIRRORS` is very useful. Adding the host
364 you want to use to ``PREMIRRORS`` results in the source code being 384 you want to use to :term:`PREMIRRORS` results in the source code being
365 fetched from an allowed location and avoids raising an error when a 385 fetched from an allowed location and avoids raising an error when a
366 host that is not allowed is in a :term:`SRC_URI` 386 host that is not allowed is in a :term:`SRC_URI`
367 statement. This is because the fetcher does not attempt to use the 387 statement. This is because the fetcher does not attempt to use the
368 host listed in ``SRC_URI`` after a successful fetch from the 388 host listed in :term:`SRC_URI` after a successful fetch from the
369 ``PREMIRRORS`` occurs. 389 :term:`PREMIRRORS` occurs.
370 390
371 :term:`BB_DANGLINGAPPENDS_WARNONLY` 391 :term:`BB_BASEHASH_IGNORE_VARS`
372 Defines how BitBake handles situations where an append file 392 See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual.
373 (``.bbappend``) has no corresponding recipe file (``.bb``). This
374 condition often occurs when layers get out of sync (e.g. ``oe-core``
375 bumps a recipe version and the old recipe no longer exists and the
376 other layer has not been updated to the new version of the recipe
377 yet).
378 393
379 The default fatal behavior is safest because it is the sane reaction 394 :term:`BB_CACHEDIR`
380 given something is out of sync. It is important to realize when your 395 See :term:`bitbake:BB_CACHEDIR` in the BitBake manual.
381 changes are no longer being applied.
382 396
383 You can change the default behavior by setting this variable to "1", 397 :term:`BB_CHECK_SSL_CERTS`
384 "yes", or "true" in your ``local.conf`` file, which is located in the 398 See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual.
385 :term:`Build Directory`: Here is an example:
386 ::
387 399
388 BB_DANGLINGAPPENDS_WARNONLY = "1" 400 :term:`BB_CONF_FRAGMENT_DESCRIPTION`
401 The :term:`BB_CONF_FRAGMENT_DESCRIPTION` variable defines the textual
402 description of a :term:`Configuration Fragment`. For details on how to use
403 fragments, see the :doc:`/ref-manual/fragments` section of the Yocto
404 Project Reference Manual.
405
406 :term:`BB_CONF_FRAGMENT_SUMMARY`
407 The :term:`BB_CONF_FRAGMENT_SUMMARY` variable defines the one-line textual
408 summary of a :term:`Configuration Fragment`. For details on how to use
409 fragments, see the :doc:`/ref-manual/fragments` section of the Yocto
410 Project Reference Manual.
411
412 :term:`BB_CONSOLELOG`
413 See :term:`bitbake:BB_CONSOLELOG` in the BitBake manual.
414
415 :term:`BB_CURRENT_MC`
416 See :term:`bitbake:BB_CURRENT_MC` in the BitBake manual.
417
418 :term:`BB_CURRENTTASK`
419 See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual.
420
421 :term:`BB_DEFAULT_TASK`
422 See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual.
423
424 :term:`BB_DEFAULT_UMASK`
425 See :term:`bitbake:BB_DEFAULT_UMASK` in the BitBake manual.
426
427 :term:`BB_DEFER_BBCLASSES`
428 See :term:`bitbake:BB_DEFER_BBCLASSES` in the BitBake manual.
389 429
390 :term:`BB_DISKMON_DIRS` 430 :term:`BB_DISKMON_DIRS`
391 Monitors disk space and available inodes during the build and allows 431 Monitors disk space and available inodes during the build and allows
392 you to control the build based on these parameters. 432 you to control the build based on these parameters.
393 433
394 Disk space monitoring is disabled by default. To enable monitoring, 434 Disk space monitoring is disabled by default. To enable monitoring,
395 add the ``BB_DISKMON_DIRS`` variable to your ``conf/local.conf`` file 435 add the :term:`BB_DISKMON_DIRS` variable to your ``conf/local.conf`` file
396 found in the :term:`Build Directory`. Use the 436 found in the :term:`Build Directory`. Use the
397 following form: 437 following form:
398 438
@@ -403,7 +443,7 @@ system and gives an overview of their function and contents.
403 where: 443 where:
404 444
405 action is: 445 action is:
406 ABORT: Immediately abort the build when 446 ABORT: Immediately stop the build when
407 a threshold is broken. 447 a threshold is broken.
408 STOPTASKS: Stop the build after the currently 448 STOPTASKS: Stop the build after the currently
409 executing tasks have finished when 449 executing tasks have finished when
@@ -432,8 +472,7 @@ system and gives an overview of their function and contents.
432 not specify G, M, or K, Kbytes is assumed by 472 not specify G, M, or K, Kbytes is assumed by
433 default. Do not use GB, MB, or KB. 473 default. Do not use GB, MB, or KB.
434 474
435 Here are some examples: 475 Here are some examples::
436 ::
437 476
438 BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K" 477 BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
439 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G" 478 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
@@ -442,13 +481,13 @@ system and gives an overview of their function and contents.
442 The first example works only if you also provide the 481 The first example works only if you also provide the
443 :term:`BB_DISKMON_WARNINTERVAL` 482 :term:`BB_DISKMON_WARNINTERVAL`
444 variable in the ``conf/local.conf``. This example causes the build 483 variable in the ``conf/local.conf``. This example causes the build
445 system to immediately abort when either the disk space in 484 system to immediately stop when either the disk space in
446 ``${TMPDIR}`` drops below 1 Gbyte or the available free inodes drops 485 ``${TMPDIR}`` drops below 1 Gbyte or the available free inodes drops
447 below 100 Kbytes. Because two directories are provided with the 486 below 100 Kbytes. Because two directories are provided with the
448 variable, the build system also issue a warning when the disk space 487 variable, the build system also issue a warning when the disk space
449 in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number 488 in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number
450 of free inodes drops below 100 Kbytes. Subsequent warnings are issued 489 of free inodes drops below 100 Kbytes. Subsequent warnings are issued
451 during intervals as defined by the ``BB_DISKMON_WARNINTERVAL`` 490 during intervals as defined by the :term:`BB_DISKMON_WARNINTERVAL`
452 variable. 491 variable.
453 492
454 The second example stops the build after all currently executing 493 The second example stops the build after all currently executing
@@ -456,7 +495,7 @@ system and gives an overview of their function and contents.
456 directory drops below 1 Gbyte. No disk monitoring occurs for the free 495 directory drops below 1 Gbyte. No disk monitoring occurs for the free
457 inodes in this case. 496 inodes in this case.
458 497
459 The final example immediately aborts the build when the number of 498 The final example immediately stops the build when the number of
460 free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No 499 free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No
461 disk space monitoring for the directory itself occurs in this case. 500 disk space monitoring for the directory itself occurs in this case.
462 501
@@ -465,16 +504,15 @@ system and gives an overview of their function and contents.
465 intervals, define the variable in your ``conf/local.conf`` file in 504 intervals, define the variable in your ``conf/local.conf`` file in
466 the :term:`Build Directory`. 505 the :term:`Build Directory`.
467 506
468 If you are going to use the ``BB_DISKMON_WARNINTERVAL`` variable, you 507 If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you
469 must also use the :term:`BB_DISKMON_DIRS` 508 must also use the :term:`BB_DISKMON_DIRS`
470 variable and define its action as "WARN". During the build, 509 variable and define its action as "WARN". During the build,
471 subsequent warnings are issued each time disk space or number of free 510 subsequent warnings are issued each time disk space or number of free
472 inodes further reduces by the respective interval. 511 inodes further reduces by the respective interval.
473 512
474 If you do not provide a ``BB_DISKMON_WARNINTERVAL`` variable and you 513 If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you
475 do use ``BB_DISKMON_DIRS`` with the "WARN" action, the disk 514 do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk
476 monitoring interval defaults to the following: 515 monitoring interval defaults to the following::
477 ::
478 516
479 BB_DISKMON_WARNINTERVAL = "50M,5K" 517 BB_DISKMON_WARNINTERVAL = "50M,5K"
480 518
@@ -497,8 +535,7 @@ system and gives an overview of their function and contents.
497 G, M, or K for Gbytes, Mbytes, or Kbytes, 535 G, M, or K for Gbytes, Mbytes, or Kbytes,
498 respectively. You cannot use GB, MB, or KB. 536 respectively. You cannot use GB, MB, or KB.
499 537
500 Here is an example: 538 Here is an example::
501 ::
502 539
503 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K" 540 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
504 BB_DISKMON_WARNINTERVAL = "50M,5K" 541 BB_DISKMON_WARNINTERVAL = "50M,5K"
@@ -511,6 +548,18 @@ system and gives an overview of their function and contents.
511 a respective interval is reached beyond the initial warning (i.e. 1 548 a respective interval is reached beyond the initial warning (i.e. 1
512 Gbytes and 100 Kbytes). 549 Gbytes and 100 Kbytes).
513 550
551 :term:`BB_ENV_PASSTHROUGH`
552 See :term:`bitbake:BB_ENV_PASSTHROUGH` in the BitBake manual.
553
554 :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
555 See :term:`bitbake:BB_ENV_PASSTHROUGH_ADDITIONS` in the BitBake manual.
556
557 :term:`BB_FETCH_PREMIRRORONLY`
558 See :term:`bitbake:BB_FETCH_PREMIRRORONLY` in the BitBake manual.
559
560 :term:`BB_FILENAME`
561 See :term:`bitbake:BB_FILENAME` in the BitBake manual.
562
514 :term:`BB_GENERATE_MIRROR_TARBALLS` 563 :term:`BB_GENERATE_MIRROR_TARBALLS`
515 Causes tarballs of the source control repositories (e.g. Git 564 Causes tarballs of the source control repositories (e.g. Git
516 repositories), including metadata, to be placed in the 565 repositories), including metadata, to be placed in the
@@ -518,8 +567,7 @@ system and gives an overview of their function and contents.
518 567
519 For performance reasons, creating and placing tarballs of these 568 For performance reasons, creating and placing tarballs of these
520 repositories is not the default action by the OpenEmbedded build 569 repositories is not the default action by the OpenEmbedded build
521 system. 570 system::
522 ::
523 571
524 BB_GENERATE_MIRROR_TARBALLS = "1" 572 BB_GENERATE_MIRROR_TARBALLS = "1"
525 573
@@ -527,72 +575,227 @@ system and gives an overview of their function and contents.
527 ``local.conf`` file in the :term:`Build Directory`. 575 ``local.conf`` file in the :term:`Build Directory`.
528 576
529 Once you have the tarballs containing your source files, you can 577 Once you have the tarballs containing your source files, you can
530 clean up your ``DL_DIR`` directory by deleting any Git or other 578 clean up your :term:`DL_DIR` directory by deleting any Git or other
531 source control work directories. 579 source control work directories.
532 580
581 :term:`BB_GENERATE_SHALLOW_TARBALLS`
582 See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual.
583
584 :term:`BB_GIT_DEFAULT_DESTSUFFIX`
585 See :term:`bitbake:BB_GIT_DEFAULT_DESTSUFFIX` in the BitBake manual.
586
587 In :term:`OpenEmbedded-Core (OE-Core)`, this variable is set to
588 :term:`BP` by default in :oe_git:`bitbake.conf
589 </openembedded-core/tree/meta/conf/bitbake.conf>`.
590
591 :term:`BB_GIT_SHALLOW`
592 See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual.
593
594 :term:`BB_GIT_SHALLOW_DEPTH`
595 See :term:`bitbake:BB_GIT_SHALLOW_DEPTH` in the BitBake manual.
596
597 :term:`BB_HASHCHECK_FUNCTION`
598 See :term:`bitbake:BB_HASHCHECK_FUNCTION` in the BitBake manual.
599
600 :term:`BB_HASHCONFIG_IGNORE_VARS`
601 See :term:`bitbake:BB_HASHCONFIG_IGNORE_VARS` in the BitBake manual.
602
603 :term:`BB_HASHSERVE`
604 See :term:`bitbake:BB_HASHSERVE` in the BitBake manual.
605
606 :term:`BB_HASHSERVE_UPSTREAM`
607 See :term:`bitbake:BB_HASHSERVE_UPSTREAM` in the BitBake manual.
608
609 :term:`BB_INVALIDCONF`
610 See :term:`bitbake:BB_INVALIDCONF` in the BitBake manual.
611
612 :term:`BB_LOADFACTOR_MAX`
613 The system load threshold above which :term:`BitBake` will stop running
614 extra tasks.
615
616 For more information on how to limit the resources used during builds, see
617 the :doc:`/dev-manual/limiting-resources` section of the Yocto Project
618 Development Tasks Manual.
619
620 :term:`BB_LOGCONFIG`
621 See :term:`bitbake:BB_LOGCONFIG` in the BitBake manual.
622
623 :term:`BB_LOGFMT`
624 See :term:`bitbake:BB_LOGFMT` in the BitBake manual.
625
626 :term:`BB_MULTI_PROVIDER_ALLOWED`
627 See :term:`bitbake:BB_MULTI_PROVIDER_ALLOWED` in the BitBake manual.
628
629 :term:`BB_NICE_LEVEL`
630 See :term:`bitbake:BB_NICE_LEVEL` in the BitBake manual.
631
632 :term:`BB_NO_NETWORK`
633 See :term:`bitbake:BB_NO_NETWORK` in the BitBake manual.
634
635 :term:`BB_NUMBER_PARSE_THREADS`
636 See :term:`bitbake:BB_NUMBER_PARSE_THREADS` in the BitBake manual.
637
533 :term:`BB_NUMBER_THREADS` 638 :term:`BB_NUMBER_THREADS`
534 The maximum number of tasks BitBake should run in parallel at any one 639 The maximum number of tasks BitBake should run in parallel at any one
535 time. The OpenEmbedded build system automatically configures this 640 time. The OpenEmbedded build system automatically configures this
536 variable to be equal to the number of cores on the build system. For 641 variable to be equal to the number of cores on the build system. For
537 example, a system with a dual core processor that also uses 642 example, a system with a dual core processor that also uses
538 hyper-threading causes the ``BB_NUMBER_THREADS`` variable to default 643 hyper-threading causes the :term:`BB_NUMBER_THREADS` variable to default
539 to "4". 644 to "4".
540 645
541 For single socket systems (i.e. one CPU), you should not have to 646 For single socket systems (i.e. one CPU), you should not have to
542 override this variable to gain optimal parallelism during builds. 647 override this variable to gain optimal parallelism during builds.
543 However, if you have very large systems that employ multiple physical 648 However, if you have very large systems that employ multiple physical
544 CPUs, you might want to make sure the ``BB_NUMBER_THREADS`` variable 649 CPUs, you might want to make sure the :term:`BB_NUMBER_THREADS` variable
545 is not set higher than "20". 650 is not set higher than "20".
546 651
547 For more information on speeding up builds, see the 652 For more information on speeding up builds, see the
548 ":ref:`dev-manual/common-tasks:speeding up a build`" 653 ":ref:`dev-manual/speeding-up-build:speeding up a build`"
549 section in the Yocto Project Development Tasks Manual. 654 section in the Yocto Project Development Tasks Manual.
550 655
656 On the other hand, if your goal is to limit the amount of system
657 resources consumed by BitBake tasks, setting :term:`BB_NUMBER_THREADS`
658 to a number lower than the number of CPU threads in your machine
659 won't be sufficient. That's because each package will still be built
660 and installed through a number of parallel jobs specified by the
661 :term:`PARALLEL_MAKE` variable, which is by default the number of CPU
662 threads in your system, and is not impacted by the
663 :term:`BB_NUMBER_THREADS` value.
664
665 So, if you set :term:`BB_NUMBER_THREADS` to "1" but don't set
666 :term:`PARALLEL_MAKE`, most of your system resources will be consumed
667 anyway.
668
669 Therefore, if you intend to reduce the load of your build system by
670 setting :term:`BB_NUMBER_THREADS` to a relatively low value compared
671 to the number of CPU threads on your system, you should also set
672 :term:`PARALLEL_MAKE` to a similarly low value.
673
674 An alternative to using :term:`BB_NUMBER_THREADS` to keep the usage
675 of build system resources under control is to use the smarter
676 :term:`BB_PRESSURE_MAX_CPU`, :term:`BB_PRESSURE_MAX_IO` or
677 :term:`BB_PRESSURE_MAX_MEMORY` controls. See the
678 :doc:`/dev-manual/limiting-resources` section of the Yocto Project
679 Development Tasks Manual.
680
681 :term:`BB_ORIGENV`
682 See :term:`bitbake:BB_ORIGENV` in the BitBake manual.
683
684 :term:`BB_PRESERVE_ENV`
685 See :term:`bitbake:BB_PRESERVE_ENV` in the BitBake manual.
686
687 :term:`BB_PRESSURE_MAX_CPU`
688 See :term:`bitbake:BB_PRESSURE_MAX_CPU` in the BitBake manual.
689
690 For more information on how to limit the resources used during builds, see
691 the :doc:`/dev-manual/limiting-resources` section of the Yocto Project
692 Development Tasks Manual.
693
694 :term:`BB_PRESSURE_MAX_IO`
695 See :term:`bitbake:BB_PRESSURE_MAX_IO` in the BitBake manual.
696
697 For more information on how to limit the resources used during builds, see
698 the :doc:`/dev-manual/limiting-resources` section of the Yocto Project
699 Development Tasks Manual.
700
701 :term:`BB_PRESSURE_MAX_MEMORY`
702 See :term:`bitbake:BB_PRESSURE_MAX_MEMORY` in the BitBake manual.
703
704 For more information on how to limit the resources used during builds, see
705 the :doc:`/dev-manual/limiting-resources` section of the Yocto Project
706 Development Tasks Manual.
707
708 :term:`BB_RUNFMT`
709 See :term:`bitbake:BB_RUNFMT` in the BitBake manual.
710
711 :term:`BB_RUNTASK`
712 See :term:`bitbake:BB_RUNTASK` in the BitBake manual.
713
714 :term:`BB_SCHEDULER`
715 See :term:`bitbake:BB_SCHEDULER` in the BitBake manual.
716
717 :term:`BB_SCHEDULERS`
718 See :term:`bitbake:BB_SCHEDULERS` in the BitBake manual.
719
551 :term:`BB_SERVER_TIMEOUT` 720 :term:`BB_SERVER_TIMEOUT`
552 Specifies the time (in seconds) after which to unload the BitBake 721 Specifies the time (in seconds) after which to unload the BitBake
553 server due to inactivity. Set ``BB_SERVER_TIMEOUT`` to determine how 722 server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how
554 long the BitBake server stays resident between invocations. 723 long the BitBake server stays resident between invocations.
555 724
556 For example, the following statement in your ``local.conf`` file 725 For example, the following statement in your ``local.conf`` file
557 instructs the server to be unloaded after 20 seconds of inactivity: 726 instructs the server to be unloaded after 20 seconds of inactivity::
558 ::
559 727
560 BB_SERVER_TIMEOUT = "20" 728 BB_SERVER_TIMEOUT = "20"
561 729
562 If you want the server to never be unloaded, 730 If you want the server to never be unloaded,
563 set ``BB_SERVER_TIMEOUT`` to "-1". 731 set :term:`BB_SERVER_TIMEOUT` to "-1".
732
733 :term:`BB_SETSCENE_DEPVALID`
734 See :term:`bitbake:BB_SETSCENE_DEPVALID` in the BitBake manual.
735
736 :term:`BB_SIGNATURE_EXCLUDE_FLAGS`
737 See :term:`bitbake:BB_SIGNATURE_EXCLUDE_FLAGS` in the BitBake manual.
738
739 :term:`BB_SIGNATURE_HANDLER`
740 See :term:`bitbake:BB_SIGNATURE_HANDLER` in the BitBake manual.
741
742 :term:`BB_SRCREV_POLICY`
743 See :term:`bitbake:BB_SRCREV_POLICY` in the BitBake manual.
744
745 :term:`BB_STRICT_CHECKSUM`
746 See :term:`bitbake:BB_STRICT_CHECKSUM` in the BitBake manual.
747
748 :term:`BB_TASK_IONICE_LEVEL`
749 See :term:`bitbake:BB_TASK_IONICE_LEVEL` in the BitBake manual.
750
751 :term:`BB_TASK_NICE_LEVEL`
752 See :term:`bitbake:BB_TASK_NICE_LEVEL` in the BitBake manual.
753
754 :term:`BB_TASKHASH`
755 See :term:`bitbake:BB_TASKHASH` in the BitBake manual.
756
757 :term:`BB_USE_HOME_NPMRC`
758 See :term:`bitbake:BB_USE_HOME_NPMRC` in the BitBake manual.
759
760 :term:`BB_VERBOSE_LOGS`
761 See :term:`bitbake:BB_VERBOSE_LOGS` in the BitBake manual.
762
763 :term:`BB_WORKERCONTEXT`
764 See :term:`bitbake:BB_WORKERCONTEXT` in the BitBake manual.
564 765
565 :term:`BBCLASSEXTEND` 766 :term:`BBCLASSEXTEND`
566 Allows you to extend a recipe so that it builds variants of the 767 Allows you to extend a recipe so that it builds variants of the
567 software. Common variants for recipes exist such as "natives" like 768 software. There are common variants for recipes as "natives" like
568 ``quilt-native``, which is a copy of Quilt built to run on the build 769 ``quilt-native``, which is a copy of Quilt built to run on the build
569 system; "crosses" such as ``gcc-cross``, which is a compiler built to 770 system; "crosses" such as ``gcc-cross``, which is a compiler built to
570 run on the build machine but produces binaries that run on the target 771 run on the build machine but produces binaries that run on the target
571 :term:`MACHINE`; "nativesdk", which targets the SDK 772 :term:`MACHINE`; ":ref:`ref-classes-nativesdk`", which
572 machine instead of ``MACHINE``; and "mulitlibs" in the form 773 targets the SDK machine instead of :term:`MACHINE`; and "mulitlibs" in
573 "``multilib:``\ multilib_name". 774 the form "``multilib:``\ multilib_name".
574 775
575 To build a different variant of the recipe with a minimal amount of 776 To build a different variant of the recipe with a minimal amount of
576 code, it usually is as simple as adding the following to your recipe: 777 code, it usually is as simple as adding the following to your recipe::
577 ::
578 778
579 BBCLASSEXTEND =+ "native nativesdk" 779 BBCLASSEXTEND =+ "native nativesdk"
580 BBCLASSEXTEND =+ "multilib:multilib_name" 780 BBCLASSEXTEND =+ "multilib:multilib_name"
581 781
582 .. note:: 782 .. note::
583 783
584 Internally, the ``BBCLASSEXTEND`` mechanism generates recipe 784 Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe
585 variants by rewriting variable values and applying overrides such 785 variants by rewriting variable values and applying overrides such
586 as ``_class-native``. For example, to generate a native version of 786 as ``:class-native``. For example, to generate a native version of
587 a recipe, a :term:`DEPENDS` on "foo" is rewritten 787 a recipe, a :term:`DEPENDS` on "foo" is rewritten
588 to a ``DEPENDS`` on "foo-native". 788 to a :term:`DEPENDS` on "foo-native".
589 789
590 Even when using ``BBCLASSEXTEND``, the recipe is only parsed once. 790 Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once.
591 Parsing once adds some limitations. For example, it is not 791 Parsing once adds some limitations. For example, it is not
592 possible to include a different file depending on the variant, 792 possible to include a different file depending on the variant,
593 since ``include`` statements are processed when the recipe is 793 since ``include`` statements are processed when the recipe is
594 parsed. 794 parsed.
595 795
796 :term:`BBDEBUG`
797 See :term:`bitbake:BBDEBUG` in the BitBake manual.
798
596 :term:`BBFILE_COLLECTIONS` 799 :term:`BBFILE_COLLECTIONS`
597 Lists the names of configured layers. These names are used to find 800 Lists the names of configured layers. These names are used to find
598 the other ``BBFILE_*`` variables. Typically, each layer will append 801 the other ``BBFILE_*`` variables. Typically, each layer will append
@@ -610,17 +813,17 @@ system and gives an overview of their function and contents.
610 This variable is useful in situations where the same recipe appears 813 This variable is useful in situations where the same recipe appears
611 in more than one layer. Setting this variable allows you to 814 in more than one layer. Setting this variable allows you to
612 prioritize a layer against other layers that contain the same recipe 815 prioritize a layer against other layers that contain the same recipe
613 - effectively letting you control the precedence for the multiple 816 --- effectively letting you control the precedence for the multiple
614 layers. The precedence established through this variable stands 817 layers. The precedence established through this variable stands
615 regardless of a recipe's version (:term:`PV` variable). For 818 regardless of a recipe's version (:term:`PV` variable). For
616 example, a layer that has a recipe with a higher ``PV`` value but for 819 example, a layer that has a recipe with a higher :term:`PV` value but for
617 which the ``BBFILE_PRIORITY`` is set to have a lower precedence still 820 which the :term:`BBFILE_PRIORITY` is set to have a lower precedence still
618 has a lower precedence. 821 has a lower precedence.
619 822
620 A larger value for the ``BBFILE_PRIORITY`` variable results in a 823 A larger value for the :term:`BBFILE_PRIORITY` variable results in a
621 higher precedence. For example, the value 6 has a higher precedence 824 higher precedence. For example, the value 6 has a higher precedence
622 than the value 5. If not specified, the ``BBFILE_PRIORITY`` variable 825 than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable
623 is set based on layer dependencies (see the ``LAYERDEPENDS`` variable 826 is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable
624 for more information. The default priority, if unspecified for a 827 for more information. The default priority, if unspecified for a
625 layer with no dependencies, is the lowest defined priority + 1 (or 1 828 layer with no dependencies, is the lowest defined priority + 1 (or 1
626 if no priorities are defined). 829 if no priorities are defined).
@@ -635,7 +838,7 @@ system and gives an overview of their function and contents.
635 software. 838 software.
636 839
637 When specifying recipe files, you can pattern match using Python's 840 When specifying recipe files, you can pattern match using Python's
638 `glob <https://docs.python.org/3/library/glob.html>`_ syntax. 841 `glob <https://docs.python.org/3/library/glob.html>`__ syntax.
639 For details on the syntax, see the documentation by following the 842 For details on the syntax, see the documentation by following the
640 previous link. 843 previous link.
641 844
@@ -643,15 +846,16 @@ system and gives an overview of their function and contents.
643 Activates content when identified layers are present. You identify 846 Activates content when identified layers are present. You identify
644 the layers by the collections that the layers define. 847 the layers by the collections that the layers define.
645 848
646 Use the ``BBFILES_DYNAMIC`` variable to avoid ``.bbappend`` files 849 Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files
647 whose corresponding ``.bb`` file is in a layer that attempts to 850 whose corresponding ``.bb`` file is in a layer that attempts to
648 modify other layers through ``.bbappend`` but does not want to 851 modify other layers through ``.bbappend`` but does not want to
649 introduce a hard dependency on those other layers. 852 introduce a hard dependency on those other layers.
650 853
651 Use the following form for ``BBFILES_DYNAMIC``: 854 Use the following form for :term:`BBFILES_DYNAMIC`:
652 collection_name:filename_pattern The following example identifies two 855 ``collection_name:filename_pattern``.
653 collection names and two filename patterns: 856
654 :: 857 The following example identifies two collection names and two
858 filename patterns::
655 859
656 BBFILES_DYNAMIC += " \ 860 BBFILES_DYNAMIC += " \
657 clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \ 861 clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
@@ -659,7 +863,7 @@ system and gives an overview of their function and contents.
659 " 863 "
660 864
661 This next example shows an error message that occurs because invalid 865 This next example shows an error message that occurs because invalid
662 entries are found, which cause parsing to abort: 866 entries are found, which cause parsing to fail:
663 867
664 .. code-block:: none 868 .. code-block:: none
665 869
@@ -667,20 +871,22 @@ system and gives an overview of their function and contents.
667 /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend 871 /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
668 /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend 872 /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
669 873
874 :term:`BBINCLUDED`
875 See :term:`bitbake:BBINCLUDED` in the BitBake manual.
876
670 :term:`BBINCLUDELOGS` 877 :term:`BBINCLUDELOGS`
671 Variable that controls how BitBake displays logs on build failure. 878 Variable that controls how BitBake displays logs on build failure.
672 879
673 :term:`BBINCLUDELOGS_LINES` 880 :term:`BBINCLUDELOGS_LINES`
674 If :term:`BBINCLUDELOGS` is set, specifies the 881 If :term:`BBINCLUDELOGS` is set, specifies the
675 maximum number of lines from the task log file to print when 882 maximum number of lines from the task log file to print when
676 reporting a failed task. If you do not set ``BBINCLUDELOGS_LINES``, 883 reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`,
677 the entire log is printed. 884 the entire log is printed.
678 885
679 :term:`BBLAYERS` 886 :term:`BBLAYERS`
680 Lists the layers to enable during the build. This variable is defined 887 Lists the layers to enable during the build. This variable is defined
681 in the ``bblayers.conf`` configuration file in the :term:`Build Directory`. 888 in the ``bblayers.conf`` configuration file in the :term:`Build Directory`.
682 Here is an example: 889 Here is an example::
683 ::
684 890
685 BBLAYERS = " \ 891 BBLAYERS = " \
686 /home/scottrif/poky/meta \ 892 /home/scottrif/poky/meta \
@@ -692,10 +898,13 @@ system and gives an overview of their function and contents.
692 This example enables four layers, one of which is a custom, 898 This example enables four layers, one of which is a custom,
693 user-defined layer named ``meta-mykernel``. 899 user-defined layer named ``meta-mykernel``.
694 900
901 :term:`BBLAYERS_FETCH_DIR`
902 See :term:`bitbake:BBLAYERS_FETCH_DIR` in the BitBake manual.
903
695 :term:`BBMASK` 904 :term:`BBMASK`
696 Prevents BitBake from processing recipes and recipe append files. 905 Prevents BitBake from processing recipes and recipe append files.
697 906
698 You can use the ``BBMASK`` variable to "hide" these ``.bb`` and 907 You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and
699 ``.bbappend`` files. BitBake ignores any recipe or recipe append 908 ``.bbappend`` files. BitBake ignores any recipe or recipe append
700 files that match any of the expressions. It is as if BitBake does not 909 files that match any of the expressions. It is as if BitBake does not
701 see them at all. Consequently, matching files are not parsed or 910 see them at all. Consequently, matching files are not parsed or
@@ -709,14 +918,13 @@ system and gives an overview of their function and contents.
709 918
710 The following example uses a complete regular expression to tell 919 The following example uses a complete regular expression to tell
711 BitBake to ignore all recipe and recipe append files in the 920 BitBake to ignore all recipe and recipe append files in the
712 ``meta-ti/recipes-misc/`` directory: 921 ``meta-ti/recipes-misc/`` directory::
713 ::
714 922
715 BBMASK = "meta-ti/recipes-misc/" 923 BBMASK = "meta-ti/recipes-misc/"
716 924
717 If you want to mask out multiple directories or recipes, you can 925 If you want to mask out multiple directories or recipes, you can
718 specify multiple regular expression fragments. This next example 926 specify multiple regular expression fragments. This next example
719 masks out multiple directories and individual recipes: :: 927 masks out multiple directories and individual recipes::
720 928
721 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/" 929 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
722 BBMASK += "/meta-oe/recipes-support/" 930 BBMASK += "/meta-oe/recipes-support/"
@@ -734,72 +942,55 @@ system and gives an overview of their function and contents.
734 building targets with multiple configurations. Use this variable in 942 building targets with multiple configurations. Use this variable in
735 your ``conf/local.conf`` configuration file. Specify a 943 your ``conf/local.conf`` configuration file. Specify a
736 multiconfigname for each configuration file you are using. For 944 multiconfigname for each configuration file you are using. For
737 example, the following line specifies three configuration files: 945 example, the following line specifies three configuration files::
738 ::
739 946
740 BBMULTICONFIG = "configA configB configC" 947 BBMULTICONFIG = "configA configB configC"
741 948
742 Each configuration file you 949 Each configuration file you use must reside in a ``multiconfig``
743 use must reside in the :term:`Build Directory` 950 subdirectory of a configuration directory within a layer, or
744 ``conf/multiconfig`` directory (e.g. 951 within the :term:`Build Directory` (e.g.
745 build_directory\ ``/conf/multiconfig/configA.conf``). 952 ``build_directory/conf/multiconfig/configA.conf`` or
953 ``mylayer/conf/multiconfig/configB.conf``).
746 954
747 For information on how to use ``BBMULTICONFIG`` in an environment 955 For information on how to use :term:`BBMULTICONFIG` in an environment
748 that supports building targets with multiple configurations, see the 956 that supports building targets with multiple configurations, see the
749 ":ref:`dev-manual/common-tasks:building images for multiple targets using multiple configurations`" 957 ":ref:`dev-manual/building:building images for multiple targets using multiple configurations`"
750 section in the Yocto Project Development Tasks Manual. 958 section in the Yocto Project Development Tasks Manual.
751 959
752 :term:`BBPATH` 960 :term:`BBPATH`
753 Used by BitBake to locate ``.bbclass`` and configuration files. This 961 See :term:`bitbake:BBPATH` in the BitBake manual.
754 variable is analogous to the ``PATH`` variable.
755
756 .. note::
757
758 If you run BitBake from a directory outside of the
759 Build Directory
760 , you must be sure to set
761 BBPATH
762 to point to the Build Directory. Set the variable as you would any
763 environment variable and then run BitBake:
764 ::
765
766 $ BBPATH = "build_directory"
767 $ export BBPATH
768 $ bitbake target
769
770 962
771 :term:`BBSERVER` 963 :term:`BBSERVER`
772 If defined in the BitBake environment, ``BBSERVER`` points to the 964 If defined in the BitBake environment, :term:`BBSERVER` points to the
773 BitBake remote server. 965 BitBake remote server.
774 966
775 Use the following format to export the variable to the BitBake 967 Use the following format to export the variable to the BitBake
776 environment: 968 environment::
777 ::
778 969
779 export BBSERVER=localhost:$port 970 export BBSERVER=localhost:$port
780 971
781 By default, ``BBSERVER`` also appears in 972 By default, :term:`BBSERVER` also appears in :term:`BB_BASEHASH_IGNORE_VARS`.
782 :term:`bitbake:BB_HASHBASE_WHITELIST`. 973 Consequently, :term:`BBSERVER` is excluded from checksum and dependency
783 Consequently, ``BBSERVER`` is excluded from checksum and dependency
784 data. 974 data.
785 975
976 :term:`BBTARGETS`
977 See :term:`bitbake:BBTARGETS` in the BitBake manual.
978
786 :term:`BINCONFIG` 979 :term:`BINCONFIG`
787 When inheriting the 980 When inheriting the :ref:`ref-classes-binconfig-disabled` class, this
788 :ref:`binconfig-disabled <ref-classes-binconfig-disabled>` class, 981 variable specifies binary configuration scripts to disable in favor of
789 this variable specifies binary configuration scripts to disable in 982 using ``pkg-config`` to query the information. The
790 favor of using ``pkg-config`` to query the information. The 983 :ref:`ref-classes-binconfig-disabled` class will modify the specified
791 ``binconfig-disabled`` class will modify the specified scripts to 984 scripts to return an error so that calls to them can be easily found
792 return an error so that calls to them can be easily found and 985 and replaced.
793 replaced.
794 986
795 To add multiple scripts, separate them by spaces. Here is an example 987 To add multiple scripts, separate them by spaces. Here is an example
796 from the ``libpng`` recipe: 988 from the ``libpng`` recipe::
797 ::
798 989
799 BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" 990 BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
800 991
801 :term:`BINCONFIG_GLOB` 992 :term:`BINCONFIG_GLOB`
802 When inheriting the :ref:`binconfig <ref-classes-binconfig>` class, 993 When inheriting the :ref:`ref-classes-binconfig` class,
803 this variable specifies a wildcard for configuration scripts that 994 this variable specifies a wildcard for configuration scripts that
804 need editing. The scripts are edited to correct any paths that have 995 need editing. The scripts are edited to correct any paths that have
805 been set up during compilation so that they are correct for use when 996 been set up during compilation so that they are correct for use when
@@ -808,7 +999,7 @@ system and gives an overview of their function and contents.
808 999
809 .. note:: 1000 .. note::
810 1001
811 The ``BINCONFIG_GLOB`` variable uses 1002 The :term:`BINCONFIG_GLOB` variable uses
812 `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__, 1003 `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__,
813 which is recognition and expansion of wildcards during pattern 1004 which is recognition and expansion of wildcards during pattern
814 matching. Shell globbing is very similar to 1005 matching. Shell globbing is very similar to
@@ -816,16 +1007,18 @@ system and gives an overview of their function and contents.
816 and `glob <https://docs.python.org/3/library/glob.html>`__. 1007 and `glob <https://docs.python.org/3/library/glob.html>`__.
817 1008
818 For more information on how this variable works, see 1009 For more information on how this variable works, see
819 ``meta/classes/binconfig.bbclass`` in the :term:`Source Directory`. 1010 ``meta/classes-recipe/binconfig.bbclass`` in the :term:`Source Directory`.
820 You can also find general 1011 You can also find general
821 information on the class in the 1012 information on the class in the
822 ":ref:`binconfig.bbclass <ref-classes-binconfig>`" section. 1013 ":ref:`ref-classes-binconfig`" section.
1014
1015 :term:`BITBAKE_UI`
1016 See :term:`bitbake:BITBAKE_UI` in the BitBake manual.
823 1017
824 :term:`BP` 1018 :term:`BP`
825 The base recipe name and version but without any special recipe name 1019 The base recipe name and version but without any special recipe name
826 suffix (i.e. ``-native``, ``lib64-``, and so forth). ``BP`` is 1020 suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is
827 comprised of the following: 1021 comprised of the following::
828 ::
829 1022
830 ${BPN}-${PV} 1023 ${BPN}-${PV}
831 1024
@@ -844,165 +1037,362 @@ system and gives an overview of their function and contents.
844 variable is a useful pointer in case a bug in the software being 1037 variable is a useful pointer in case a bug in the software being
845 built needs to be manually reported. 1038 built needs to be manually reported.
846 1039
1040 :term:`BUILD_AR`
1041 Specifies the architecture-specific :manpage:`archiver <ar(1)>` for the
1042 build host, and its default definition is derived in part from
1043 :term:`BUILD_PREFIX`::
1044
1045 BUILD_AR = "${BUILD_PREFIX}ar"
1046
1047 When building a :ref:`ref-classes-native` recipe, :term:`AR` is set to the
1048 value of this variable by default.
1049
1050 The :term:`BUILD_AR` variable should not be set manually, and is rarely
1051 used in recipes as :term:`AR` contains the appropriate value depending on
1052 the context (native or target recipes). Exception be made for target
1053 recipes that need to use the :manpage:`archiver <ar(1)>` from the build
1054 host at some point during the build.
1055
847 :term:`BUILD_ARCH` 1056 :term:`BUILD_ARCH`
848 Specifies the architecture of the build host (e.g. ``i686``). The 1057 Specifies the architecture of the build host (e.g. ``i686``). The
849 OpenEmbedded build system sets the value of ``BUILD_ARCH`` from the 1058 OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the
850 machine name reported by the ``uname`` command. 1059 machine name reported by the ``uname`` command.
851 1060
1061 :term:`BUILD_AS`
1062 Specifies the architecture-specific :manpage:`assembler <as(1)>` for the
1063 build host, and its default definition is derived in part from
1064 :term:`BUILD_PREFIX`::
1065
1066 BUILD_AS = "${BUILD_PREFIX}as ${BUILD_AS_ARCH}"
1067
1068 When building a :ref:`ref-classes-native` recipe, :term:`AS` is set to the
1069 value of this variable by default.
1070
1071 The :term:`BUILD_AS` variable should not be set manually, and is rarely
1072 used in recipes as :term:`AS` contains the appropriate value depending on
1073 the context (native or target recipes). Exception be made for target
1074 recipes that need to use the :manpage:`assembler <as(1)>` from the build
1075 host at some point during the build.
1076
852 :term:`BUILD_AS_ARCH` 1077 :term:`BUILD_AS_ARCH`
853 Specifies the architecture-specific assembler flags for the build 1078 Specifies the architecture-specific assembler flags for the build
854 host. By default, the value of ``BUILD_AS_ARCH`` is empty. 1079 host. By default, the value of :term:`BUILD_AS_ARCH` is empty.
1080
1081 :term:`BUILD_CC`
1082 Specifies the architecture-specific C compiler for the build host,
1083 and its default definition is derived in part from :term:`BUILD_PREFIX`
1084 and :term:`BUILD_CC_ARCH`::
1085
1086 BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
1087
1088 When building a :ref:`ref-classes-native` recipe, :term:`CC` is set to the
1089 value of this variable by default.
1090
1091 The :term:`BUILD_CC` variable should not be set manually, and is rarely
1092 used in recipes as :term:`CC` contains the appropriate value depending on
1093 the context (native or target recipes). Exception be made for target
1094 recipes that need to use the compiler from the build host at some point
1095 during the build.
855 1096
856 :term:`BUILD_CC_ARCH` 1097 :term:`BUILD_CC_ARCH`
857 Specifies the architecture-specific C compiler flags for the build 1098 Specifies the architecture-specific C compiler flags for the build
858 host. By default, the value of ``BUILD_CC_ARCH`` is empty. 1099 host. By default, the value of :term:`BUILD_CC_ARCH` is empty.
859 1100
860 :term:`BUILD_CCLD` 1101 :term:`BUILD_CCLD`
861 Specifies the linker command to be used for the build host when the C 1102 Specifies the :manpage:`linker <ld(1)>` command to be used for the build
862 compiler is being used as the linker. By default, ``BUILD_CCLD`` 1103 host when the C compiler is being used as the linker, and its default
863 points to GCC and passes as arguments the value of 1104 definition is derived in part from :term:`BUILD_PREFIX` and
864 :term:`BUILD_CC_ARCH`, assuming 1105 :term:`BUILD_CC_ARCH`::
865 ``BUILD_CC_ARCH`` is set. 1106
1107 BUILD_CCLD = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
1108
1109 When building a :ref:`ref-classes-native` recipe, :term:`CCLD` is set to
1110 the value of this variable by default.
1111
1112 The :term:`BUILD_CCLD` variable should not be set manually, and is rarely
1113 used in recipes as :term:`CCLD` contains the appropriate value depending on
1114 the context (native or target recipes). Exception be made for target
1115 recipes that need to use the :manpage:`linker <ld(1)>` from the build host
1116 at some point during the build.
866 1117
867 :term:`BUILD_CFLAGS` 1118 :term:`BUILD_CFLAGS`
868 Specifies the flags to pass to the C compiler when building for the 1119 Specifies the flags to pass to the C compiler when building for the
869 build host. When building in the ``-native`` context, 1120 build host. When building a :ref:`ref-classes-native` recipe,
870 :term:`CFLAGS` is set to the value of this variable by 1121 :term:`CFLAGS` is set to the value of this variable by
871 default. 1122 default.
872 1123
1124 :term:`BUILD_CPP`
1125 Specifies the C preprocessor command (to both the C and the C++ compilers)
1126 when building for the build host, and its default definition is derived in
1127 part from :term:`BUILD_PREFIX` and :term:`BUILD_CC_ARCH`::
1128
1129 BUILD_CPP = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH} -E"
1130
1131 When building a :ref:`ref-classes-native` recipe, :term:`CPP` is set to
1132 the value of this variable by default.
1133
1134 The :term:`BUILD_CPP` variable should not be set manually, and is rarely
1135 used in recipes as :term:`CPP` contains the appropriate value depending on
1136 the context (native or target recipes). Exception be made for target
1137 recipes that need to use the preprocessor from the build host at some
1138 point during the build.
1139
873 :term:`BUILD_CPPFLAGS` 1140 :term:`BUILD_CPPFLAGS`
874 Specifies the flags to pass to the C preprocessor (i.e. to both the C 1141 Specifies the flags to pass to the C preprocessor (i.e. to both the C
875 and the C++ compilers) when building for the build host. When 1142 and the C++ compilers) when building for the build host. When
876 building in the ``-native`` context, :term:`CPPFLAGS` 1143 building in the ``-native`` context, :term:`CPPFLAGS`
877 is set to the value of this variable by default. 1144 is set to the value of this variable by default.
878 1145
1146 :term:`BUILD_CXX`
1147 Specifies the architecture-specific C++ compiler for the build host,
1148 and its default definition is derived in part from :term:`BUILD_PREFIX`
1149 and :term:`BUILD_CC_ARCH`::
1150
1151 BUILD_CXX = "${CCACHE}${BUILD_PREFIX}g++ ${BUILD_CC_ARCH}"
1152
1153 When building a :ref:`ref-classes-native` recipe, :term:`CXX` is set to
1154 the value of this variable by default.
1155
1156 The :term:`BUILD_CXX` variable should not be set manually, and is rarely
1157 used in recipes as :term:`CXX` contains the appropriate value depending on
1158 the context (native or target recipes). Exception be made for target
1159 recipes that need to use the C++ compiler from the build host at some
1160 point during the build.
1161
879 :term:`BUILD_CXXFLAGS` 1162 :term:`BUILD_CXXFLAGS`
880 Specifies the flags to pass to the C++ compiler when building for the 1163 Specifies the flags to pass to the C++ compiler when building for the
881 build host. When building in the ``-native`` context, 1164 build host. When building a :ref:`ref-classes-native` recipe,
882 :term:`CXXFLAGS` is set to the value of this variable 1165 :term:`CXXFLAGS` is set to the value of this variable
883 by default. 1166 by default.
884 1167
885 :term:`BUILD_FC` 1168 :term:`BUILD_FC`
886 Specifies the Fortran compiler command for the build host. By 1169 Specifies the Fortran compiler command for the build host, and its default
887 default, ``BUILD_FC`` points to Gfortran and passes as arguments the 1170 definition is derived in part from :term:`BUILD_PREFIX` and
888 value of :term:`BUILD_CC_ARCH`, assuming 1171 :term:`BUILD_CC_ARCH`::
889 ``BUILD_CC_ARCH`` is set. 1172
1173 BUILD_FC = "${BUILD_PREFIX}gfortran ${BUILD_CC_ARCH}"
1174
1175 When building a :ref:`ref-classes-native` recipe, :term:`FC` is set to the
1176 value of this variable by default.
1177
1178 The :term:`BUILD_FC` variable should not be set manually, and is rarely
1179 used in recipes as :term:`FC` contains the appropriate value depending on
1180 the context (native or target recipes). Exception be made for target
1181 recipes that need to use the Fortran compiler from the build host at some
1182 point during the build.
890 1183
891 :term:`BUILD_LD` 1184 :term:`BUILD_LD`
892 Specifies the linker command for the build host. By default, 1185 Specifies the linker command for the build host, and its default
893 ``BUILD_LD`` points to the GNU linker (ld) and passes as arguments 1186 definition is derived in part from :term:`BUILD_PREFIX` and
894 the value of :term:`BUILD_LD_ARCH`, assuming 1187 :term:`BUILD_LD_ARCH`::
895 ``BUILD_LD_ARCH`` is set. 1188
1189 BUILD_LD = "${BUILD_PREFIX}ld ${BUILD_LD_ARCH}"
1190
1191 When building a :ref:`ref-classes-native` recipe, :term:`LD` is set to the
1192 value of this variable by default.
1193
1194 The :term:`BUILD_LD` variable should not be set manually, and is rarely
1195 used in recipes as :term:`LD` contains the appropriate value depending on
1196 the context (native or target recipes). Exception be made for target
1197 recipes that need to use the linker from the build host at some point
1198 during the build.
896 1199
897 :term:`BUILD_LD_ARCH` 1200 :term:`BUILD_LD_ARCH`
898 Specifies architecture-specific linker flags for the build host. By 1201 Specifies architecture-specific linker flags for the build host. By
899 default, the value of ``BUILD_LD_ARCH`` is empty. 1202 default, the value of :term:`BUILD_LD_ARCH` is empty.
900 1203
901 :term:`BUILD_LDFLAGS` 1204 :term:`BUILD_LDFLAGS`
902 Specifies the flags to pass to the linker when building for the build 1205 Specifies the flags to pass to the linker when building for the build
903 host. When building in the ``-native`` context, 1206 host. When building a :ref:`ref-classes-native` recipe,
904 :term:`LDFLAGS` is set to the value of this variable 1207 :term:`LDFLAGS` is set to the value of this variable
905 by default. 1208 by default.
906 1209
1210 :term:`BUILD_NM`
1211 Specifies the architecture-specific utility to list symbols from object
1212 files for the build host, and its default definition is derived in part
1213 from :term:`BUILD_PREFIX`::
1214
1215 BUILD_NM = "${BUILD_PREFIX}nm"
1216
1217 When building a :ref:`ref-classes-native` recipe, :term:`NM` is set to the
1218 value of this variable by default.
1219
1220 The :term:`BUILD_NM` variable should not be set manually, and is rarely
1221 used in recipes as :term:`NM` contains the appropriate value depending on
1222 the context (native or target recipes). Exception be made for target
1223 recipes that need to use the utility from the build host at some point
1224 during the build.
1225
1226 :term:`BUILD_OBJCOPY`
1227 Specifies the architecture-specific utility to copy object files for the
1228 build host, and its default definition is derived in part from
1229 :term:`BUILD_PREFIX`::
1230
1231 BUILD_OBJCOPY = "${BUILD_PREFIX}objcopy"
1232
1233 When building a :ref:`ref-classes-native` recipe, :term:`OBJCOPY` is set
1234 to the value of this variable by default.
1235
1236 The :term:`BUILD_OBJCOPY` variable should not be set manually, and is
1237 rarely used in recipes as :term:`OBJCOPY` contains the appropriate value
1238 depending on the context (native or target recipes). Exception be made for
1239 target recipes that need to use the utility from the build host at some
1240 point during the build.
1241
1242 :term:`BUILD_OBJDUMP`
1243 Specifies the architecture-specific utility to display object files
1244 information for the build host, and its default definition is derived in
1245 part from :term:`BUILD_PREFIX`::
1246
1247 BUILD_OBJDUMP = "${BUILD_PREFIX}objdump"
1248
1249 When building a :ref:`ref-classes-native` recipe, :term:`OBJDUMP` is set
1250 to the value of this variable by default.
1251
1252 The :term:`BUILD_OBJDUMP` variable should not be set manually, and is
1253 rarely used in recipes as :term:`OBJDUMP` contains the appropriate value
1254 depending on the context (native or target recipes). Exception be made for
1255 target recipes that need to use the utility from the build host at some
1256 point during the build.
1257
907 :term:`BUILD_OPTIMIZATION` 1258 :term:`BUILD_OPTIMIZATION`
908 Specifies the optimization flags passed to the C compiler when 1259 Specifies the optimization flags passed to the C compiler when
909 building for the build host or the SDK. The flags are passed through 1260 building for the build host or the SDK. The flags are passed through
910 the :term:`BUILD_CFLAGS` and 1261 the :term:`BUILD_CFLAGS` and
911 :term:`BUILDSDK_CFLAGS` default values. 1262 :term:`BUILDSDK_CFLAGS` default values.
912 1263
913 The default value of the ``BUILD_OPTIMIZATION`` variable is "-O2 1264 The default value of the :term:`BUILD_OPTIMIZATION` variable is "-O2
914 -pipe". 1265 -pipe".
915 1266
916 :term:`BUILD_OS` 1267 :term:`BUILD_OS`
917 Specifies the operating system in use on the build host (e.g. 1268 Specifies the operating system in use on the build host (e.g.
918 "linux"). The OpenEmbedded build system sets the value of 1269 "linux"). The OpenEmbedded build system sets the value of
919 ``BUILD_OS`` from the OS reported by the ``uname`` command - the 1270 :term:`BUILD_OS` from the OS reported by the ``uname`` command --- the
920 first word, converted to lower-case characters. 1271 first word, converted to lower-case characters.
921 1272
922 :term:`BUILD_PREFIX` 1273 :term:`BUILD_PREFIX`
923 The toolchain binary prefix used for native recipes. The OpenEmbedded 1274 The toolchain binary prefix used for native recipes. The OpenEmbedded
924 build system uses the ``BUILD_PREFIX`` value to set the 1275 build system uses the :term:`BUILD_PREFIX` value to set the
925 :term:`TARGET_PREFIX` when building for 1276 :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes.
926 ``native`` recipes. 1277
1278 :term:`BUILD_RANLIB`
1279 Specifies the architecture-specific utility to generate indexes for
1280 archives for the build host, and its default definition is derived in part
1281 from :term:`BUILD_PREFIX`::
1282
1283 BUILD_RANLIB = "${BUILD_PREFIX}ranlib -D"
1284
1285 When building a :ref:`ref-classes-native` recipe, :term:`RANLIB` is set to
1286 the value of this variable by default.
1287
1288 The :term:`BUILD_RANLIB` variable should not be set manually, and is
1289 rarely used in recipes as :term:`RANLIB` contains the appropriate value
1290 depending on the context (native or target recipes). Exception be made for
1291 target recipes that need to use the utility from the build host at some
1292 point during the build.
1293
1294 :term:`BUILD_READELF`
1295 Specifies the architecture-specific utility to display information about
1296 ELF files for the build host, and its default definition is derived in
1297 part from :term:`BUILD_PREFIX`::
1298
1299 BUILD_READELF = "${BUILD_PREFIX}readelf"
1300
1301 When building a :ref:`ref-classes-native` recipe, :term:`READELF` is set
1302 to the value of this variable by default.
1303
1304 The :term:`BUILD_READELF` variable should not be set manually, and is
1305 rarely used in recipes as :term:`READELF` contains the appropriate value
1306 depending on the context (native or target recipes). Exception be made for
1307 target recipes that need to use the utility from the build host at some
1308 point during the build.
927 1309
928 :term:`BUILD_STRIP` 1310 :term:`BUILD_STRIP`
929 Specifies the command to be used to strip debugging symbols from 1311 Specifies the command to be used to strip debugging symbols from binaries
930 binaries produced for the build host. By default, ``BUILD_STRIP`` 1312 produced for the build host, and its default definition is derived in part
931 points to 1313 from :term:`BUILD_PREFIX`::
932 ``${``\ :term:`BUILD_PREFIX`\ ``}strip``. 1314
1315 BUILD_STRIP = "${BUILD_PREFIX}strip"
1316
1317 When building a :ref:`ref-classes-native` recipe, :term:`STRIP` is set to
1318 the value of this variable by default.
1319
1320 The :term:`BUILD_STRIP` variable should not be set manually, and is
1321 rarely used in recipes as :term:`STRIP` contains the appropriate value
1322 depending on the context (native or target recipes). Exception be made for
1323 target recipes that need to use the utility from the build host at some
1324 point during the build.
933 1325
934 :term:`BUILD_SYS` 1326 :term:`BUILD_SYS`
935 Specifies the system, including the architecture and the operating 1327 Specifies the system, including the architecture and the operating
936 system, to use when building for the build host (i.e. when building 1328 system, to use when building for the build host (i.e. when building
937 ``native`` recipes). 1329 :ref:`ref-classes-native` recipes).
938 1330
939 The OpenEmbedded build system automatically sets this variable based 1331 The OpenEmbedded build system automatically sets this variable based
940 on :term:`BUILD_ARCH`, 1332 on :term:`BUILD_ARCH`,
941 :term:`BUILD_VENDOR`, and 1333 :term:`BUILD_VENDOR`, and
942 :term:`BUILD_OS`. You do not need to set the 1334 :term:`BUILD_OS`. You do not need to set the
943 ``BUILD_SYS`` variable yourself. 1335 :term:`BUILD_SYS` variable yourself.
944 1336
945 :term:`BUILD_VENDOR` 1337 :term:`BUILD_VENDOR`
946 Specifies the vendor name to use when building for the build host. 1338 Specifies the vendor name to use when building for the build host.
947 The default value is an empty string (""). 1339 The default value is an empty string ("").
948 1340
949 :term:`BUILDDIR` 1341 :term:`BUILDDIR`
950 Points to the location of the :term:`Build Directory`. 1342 Points to the location of the :term:`Build Directory`. You can define
951 You can define this directory indirectly through the 1343 this directory indirectly through the :ref:`structure-core-script` script
952 :ref:`structure-core-script` script by passing in a Build 1344 by passing in a :term:`Build Directory` path when you run the script. If
953 Directory path when you run the script. If you run the script and do 1345 you run the script and do not provide a :term:`Build Directory` path, the
954 not provide a Build Directory path, the ``BUILDDIR`` defaults to 1346 :term:`BUILDDIR` defaults to ``build`` in the current directory.
955 ``build`` in the current directory.
956 1347
957 :term:`BUILDHISTORY_COMMIT` 1348 :term:`BUILDHISTORY_COMMIT`
958 When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` 1349 When inheriting the :ref:`ref-classes-buildhistory` class, this variable
959 class, this variable specifies whether or not to commit the build 1350 specifies whether or not to commit the build history output in a local
960 history output in a local Git repository. If set to "1", this local 1351 Git repository. If set to "1", this local repository will be maintained
961 repository will be maintained automatically by the ``buildhistory`` 1352 automatically by the :ref:`ref-classes-buildhistory` class and a commit
962 class and a commit will be created on every build for changes to each 1353 will be created on every build for changes to each top-level subdirectory
963 top-level subdirectory of the build history output (images, packages, 1354 of the build history output (images, packages, and sdk). If you want to
964 and sdk). If you want to track changes to build history over time, 1355 track changes to build history over time, you should set this value to
965 you should set this value to "1". 1356 "1".
966 1357
967 By default, the ``buildhistory`` class does not commit the build 1358 By default, the :ref:`ref-classes-buildhistory` class
968 history output in a local Git repository: 1359 enables committing the buildhistory output in a local Git repository::
969 ::
970 1360
971 BUILDHISTORY_COMMIT ?= "0" 1361 BUILDHISTORY_COMMIT ?= "1"
972 1362
973 :term:`BUILDHISTORY_COMMIT_AUTHOR` 1363 :term:`BUILDHISTORY_COMMIT_AUTHOR`
974 When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` 1364 When inheriting the :ref:`ref-classes-buildhistory`
975 class, this variable specifies the author to use for each Git commit. 1365 class, this variable specifies the author to use for each Git commit.
976 In order for the ``BUILDHISTORY_COMMIT_AUTHOR`` variable to work, the 1366 In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the
977 :term:`BUILDHISTORY_COMMIT` variable must 1367 :term:`BUILDHISTORY_COMMIT` variable must
978 be set to "1". 1368 be set to "1".
979 1369
980 Git requires that the value you provide for the 1370 Git requires that the value you provide for the
981 ``BUILDHISTORY_COMMIT_AUTHOR`` variable takes the form of "name 1371 :term:`BUILDHISTORY_COMMIT_AUTHOR` variable takes the form of "name
982 email@host". Providing an email address or host that is not valid 1372 email@host". Providing an email address or host that is not valid
983 does not produce an error. 1373 does not produce an error.
984 1374
985 By default, the ``buildhistory`` class sets the variable as follows: 1375 By default, the :ref:`ref-classes-buildhistory` class sets the variable
986 :: 1376 as follows::
987 1377
988 BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>" 1378 BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
989 1379
990 :term:`BUILDHISTORY_DIR` 1380 :term:`BUILDHISTORY_DIR`
991 When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` 1381 When inheriting the :ref:`ref-classes-buildhistory`
992 class, this variable specifies the directory in which build history 1382 class, this variable specifies the directory in which build history
993 information is kept. For more information on how the variable works, 1383 information is kept. For more information on how the variable works,
994 see the ``buildhistory.class``. 1384 see the :ref:`ref-classes-buildhistory` class.
995 1385
996 By default, the ``buildhistory`` class sets the directory as follows: 1386 By default, the :ref:`ref-classes-buildhistory` class sets the directory
997 :: 1387 as follows::
998 1388
999 BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory" 1389 BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
1000 1390
1001 :term:`BUILDHISTORY_FEATURES` 1391 :term:`BUILDHISTORY_FEATURES`
1002 When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` 1392 When inheriting the :ref:`ref-classes-buildhistory`
1003 class, this variable specifies the build history features to be 1393 class, this variable specifies the build history features to be
1004 enabled. For more information on how build history works, see the 1394 enabled. For more information on how build history works, see the
1005 ":ref:`dev-manual/common-tasks:maintaining build output quality`" 1395 ":ref:`dev-manual/build-quality:maintaining build output quality`"
1006 section in the Yocto Project Development Tasks Manual. 1396 section in the Yocto Project Development Tasks Manual.
1007 1397
1008 You can specify these features in the form of a space-separated list: 1398 You can specify these features in the form of a space-separated list:
@@ -1021,14 +1411,13 @@ system and gives an overview of their function and contents.
1021 This saves one file per task and lists the SHA-256 checksums for 1411 This saves one file per task and lists the SHA-256 checksums for
1022 each file staged (i.e. the output of the task). 1412 each file staged (i.e. the output of the task).
1023 1413
1024 By default, the ``buildhistory`` class enables the following 1414 By default, the :ref:`ref-classes-buildhistory` class enables the
1025 features: 1415 following features::
1026 ::
1027 1416
1028 BUILDHISTORY_FEATURES ?= "image package sdk" 1417 BUILDHISTORY_FEATURES ?= "image package sdk"
1029 1418
1030 :term:`BUILDHISTORY_IMAGE_FILES` 1419 :term:`BUILDHISTORY_IMAGE_FILES`
1031 When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` 1420 When inheriting the :ref:`ref-classes-buildhistory`
1032 class, this variable specifies a list of paths to files copied from 1421 class, this variable specifies a list of paths to files copied from
1033 the image contents into the build history directory under an 1422 the image contents into the build history directory under an
1034 "image-files" directory in the directory for the image, so that you 1423 "image-files" directory in the directory for the image, so that you
@@ -1038,30 +1427,45 @@ system and gives an overview of their function and contents.
1038 any file. Specifying an invalid path does not produce an error. 1427 any file. Specifying an invalid path does not produce an error.
1039 Consequently, you can include files that might not always be present. 1428 Consequently, you can include files that might not always be present.
1040 1429
1041 By default, the ``buildhistory`` class provides paths to the 1430 By default, the :ref:`ref-classes-buildhistory` class provides paths to
1042 following files: 1431 the following files::
1043 ::
1044 1432
1045 BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group" 1433 BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
1046 1434
1435 :term:`BUILDHISTORY_PATH_PREFIX_STRIP`
1436 When inheriting the :ref:`ref-classes-buildhistory`
1437 class, this variable specifies a common path prefix that should be
1438 stripped off the beginning of paths in the task signature list when the
1439 ``task`` feature is active in :term:`BUILDHISTORY_FEATURES`. This can be
1440 useful when build history is populated from multiple sources that may not
1441 all use the same top level directory.
1442
1443 By default, the :ref:`ref-classes-buildhistory` class sets the variable
1444 as follows::
1445
1446 BUILDHISTORY_PATH_PREFIX_STRIP ?= ""
1447
1448 In this case, no prefixes will be stripped.
1449
1047 :term:`BUILDHISTORY_PUSH_REPO` 1450 :term:`BUILDHISTORY_PUSH_REPO`
1048 When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` 1451 When inheriting the :ref:`ref-classes-buildhistory` class, this variable
1049 class, this variable optionally specifies a remote repository to 1452 optionally specifies a remote repository to which build history pushes
1050 which build history pushes Git changes. In order for 1453 Git changes. In order for :term:`BUILDHISTORY_PUSH_REPO` to work,
1051 ``BUILDHISTORY_PUSH_REPO`` to work, 1454 :term:`BUILDHISTORY_COMMIT` must be set to "1".
1052 :term:`BUILDHISTORY_COMMIT` must be set to
1053 "1".
1054 1455
1055 The repository should correspond to a remote address that specifies a 1456 The repository should correspond to a remote address that specifies a
1056 repository as understood by Git, or alternatively to a remote name 1457 repository as understood by Git, or alternatively to a remote name
1057 that you have set up manually using ``git remote`` within the local 1458 that you have set up manually using ``git remote`` within the local
1058 repository. 1459 repository.
1059 1460
1060 By default, the ``buildhistory`` class sets the variable as follows: 1461 By default, the :ref:`ref-classes-buildhistory` class sets the variable
1061 :: 1462 as follows::
1062 1463
1063 BUILDHISTORY_PUSH_REPO ?= "" 1464 BUILDHISTORY_PUSH_REPO ?= ""
1064 1465
1466 :term:`BUILDNAME`
1467 See :term:`bitbake:BUILDNAME` in the BitBake manual.
1468
1065 :term:`BUILDSDK_CFLAGS` 1469 :term:`BUILDSDK_CFLAGS`
1066 Specifies the flags to pass to the C compiler when building for the 1470 Specifies the flags to pass to the C compiler when building for the
1067 SDK. When building in the ``nativesdk-`` context, 1471 SDK. When building in the ``nativesdk-`` context,
@@ -1088,9 +1492,8 @@ system and gives an overview of their function and contents.
1088 1492
1089 :term:`BUILDSTATS_BASE` 1493 :term:`BUILDSTATS_BASE`
1090 Points to the location of the directory that holds build statistics 1494 Points to the location of the directory that holds build statistics
1091 when you use and enable the 1495 when you use and enable the :ref:`ref-classes-buildstats` class. The
1092 :ref:`buildstats <ref-classes-buildstats>` class. The 1496 :term:`BUILDSTATS_BASE` directory defaults to
1093 ``BUILDSTATS_BASE`` directory defaults to
1094 ``${``\ :term:`TMPDIR`\ ``}/buildstats/``. 1497 ``${``\ :term:`TMPDIR`\ ``}/buildstats/``.
1095 1498
1096 :term:`BUSYBOX_SPLIT_SUID` 1499 :term:`BUSYBOX_SPLIT_SUID`
@@ -1099,24 +1502,40 @@ system and gives an overview of their function and contents.
1099 ``setuid root``, and one for the remaining features (i.e. those that 1502 ``setuid root``, and one for the remaining features (i.e. those that
1100 do not require ``setuid root``). 1503 do not require ``setuid root``).
1101 1504
1102 The ``BUSYBOX_SPLIT_SUID`` variable defaults to "1", which results in 1505 The :term:`BUSYBOX_SPLIT_SUID` variable defaults to "1", which results in
1103 splitting the output executable file. Set the variable to "0" to get 1506 splitting the output executable file. Set the variable to "0" to get
1104 a single output executable file. 1507 a single output executable file.
1105 1508
1509 :term:`BZRDIR`
1510 See :term:`bitbake:BZRDIR` in the BitBake manual.
1511
1106 :term:`CACHE` 1512 :term:`CACHE`
1107 Specifies the directory BitBake uses to store a cache of the 1513 Specifies the directory BitBake uses to store a cache of the
1108 :term:`Metadata` so it does not need to be parsed every time 1514 :term:`Metadata` so it does not need to be parsed every time
1109 BitBake is started. 1515 BitBake is started.
1110 1516
1517 :term:`CARGO_INSTALL_LIBRARIES`
1518 When inheriting the :ref:`ref-classes-cargo` class, the variable
1519 :term:`CARGO_INSTALL_LIBRARIES` can be set to a non-empty value by
1520 individual recipes to enable the installation of the libraries the
1521 recipe has built in ``${B}/target/${CARGO_TARGET_SUBDIR}`` (files ending
1522 with ``.so`` or ``.rlib``). By default this variable is not defined and
1523 libraries are not installed, to replicate the behavior of the ``cargo
1524 install`` command.
1525
1111 :term:`CC` 1526 :term:`CC`
1112 The minimal command and arguments used to run the C compiler. 1527 The minimal command and arguments used to run the C compiler.
1113 1528
1529 :term:`CCLD`
1530 The minimal command and arguments used to run the linker when the C
1531 compiler is being used as the linker.
1532
1114 :term:`CFLAGS` 1533 :term:`CFLAGS`
1115 Specifies the flags to pass to the C compiler. This variable is 1534 Specifies the flags to pass to the C compiler. This variable is
1116 exported to an environment variable and thus made visible to the 1535 exported to an environment variable and thus made visible to the
1117 software being built during the compilation step. 1536 software being built during the compilation step.
1118 1537
1119 Default initialization for ``CFLAGS`` varies depending on what is 1538 Default initialization for :term:`CFLAGS` varies depending on what is
1120 being built: 1539 being built:
1121 1540
1122 - :term:`TARGET_CFLAGS` when building for the 1541 - :term:`TARGET_CFLAGS` when building for the
@@ -1128,41 +1547,49 @@ system and gives an overview of their function and contents.
1128 - :term:`BUILDSDK_CFLAGS` when building for 1547 - :term:`BUILDSDK_CFLAGS` when building for
1129 an SDK (i.e. ``nativesdk-``) 1548 an SDK (i.e. ``nativesdk-``)
1130 1549
1550 :term:`CHECKLAYER_REQUIRED_TESTS`
1551 The :term:`CHECKLAYER_REQUIRED_TESTS` variable lists the QA tests that are
1552 required to be enabled to pass the Yocto Project Compatible status for a
1553 layer. It is meant to be a read-only variable and any change to the
1554 variable may be done with the approval of the :oe_wiki:`Technical Steering
1555 Committee (TSC) </TSC>`.
1556
1557 For more information on the Yocto Project Compatible status, see
1558 the :ref:`dev-manual/layers:Making Sure Your Layer is Compatible With
1559 Yocto Project` section of the Yocto Project Development Manual.
1560
1131 :term:`CLASSOVERRIDE` 1561 :term:`CLASSOVERRIDE`
1132 An internal variable specifying the special class override that 1562 An internal variable specifying the special class override that
1133 should currently apply (e.g. "class-target", "class-native", and so 1563 should currently apply (e.g. "class-target", "class-native", and so
1134 forth). The classes that use this variable (e.g. 1564 forth). The classes that use this variable (e.g.
1135 :ref:`native <ref-classes-native>`, 1565 :ref:`ref-classes-native`, :ref:`ref-classes-nativesdk`, and so forth)
1136 :ref:`nativesdk <ref-classes-nativesdk>`, and so forth) set the 1566 set the variable to appropriate values.
1137 variable to appropriate values.
1138 1567
1139 .. note:: 1568 .. note::
1140 1569
1141 ``CLASSOVERRIDE`` gets its default "class-target" value from the 1570 :term:`CLASSOVERRIDE` gets its default "class-target" value from the
1142 ``bitbake.conf`` file. 1571 ``bitbake.conf`` file.
1143 1572
1144 As an example, the following override allows you to install extra 1573 As an example, the following override allows you to install extra
1145 files, but only when building for the target: 1574 files, but only when building for the target::
1146 ::
1147 1575
1148 do_install_append_class-target() { 1576 do_install:append:class-target() {
1149 install my-extra-file ${D}${sysconfdir} 1577 install my-extra-file ${D}${sysconfdir}
1150 } 1578 }
1151 1579
1152 Here is an example where ``FOO`` is set to 1580 Here is an example where ``FOO`` is set to
1153 "native" when building for the build host, and to "other" when not 1581 "native" when building for the build host, and to "other" when not
1154 building for the build host: 1582 building for the build host::
1155 ::
1156 1583
1157 FOO_class-native = "native" 1584 FOO:class-native = "native"
1158 FOO = "other" 1585 FOO = "other"
1159 1586
1160 The underlying mechanism behind ``CLASSOVERRIDE`` is simply 1587 The underlying mechanism behind :term:`CLASSOVERRIDE` is simply
1161 that it is included in the default value of 1588 that it is included in the default value of
1162 :term:`OVERRIDES`. 1589 :term:`OVERRIDES`.
1163 1590
1164 :term:`CLEANBROKEN` 1591 :term:`CLEANBROKEN`
1165 If set to "1" within a recipe, ``CLEANBROKEN`` specifies that the 1592 If set to "1" within a recipe, :term:`CLEANBROKEN` specifies that the
1166 ``make clean`` command does not work for the software being built. 1593 ``make clean`` command does not work for the software being built.
1167 Consequently, the OpenEmbedded build system will not try to run 1594 Consequently, the OpenEmbedded build system will not try to run
1168 ``make clean`` during the :ref:`ref-tasks-configure` 1595 ``make clean`` during the :ref:`ref-tasks-configure`
@@ -1178,6 +1605,26 @@ system and gives an overview of their function and contents.
1178 optional at the distribution level, in case the hardware supports 1605 optional at the distribution level, in case the hardware supports
1179 Bluetooth but you do not ever intend to use it. 1606 Bluetooth but you do not ever intend to use it.
1180 1607
1608 :term:`COMMERCIAL_AUDIO_PLUGINS`
1609 This variable is specific to the :yocto_git:`GStreamer recipes
1610 </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1611 It allows to build the GStreamer `"ugly"
1612 <https://github.com/GStreamer/gst-plugins-ugly>`__ and
1613 `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ audio plugins.
1614
1615 See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1616 section for usage details.
1617
1618 :term:`COMMERCIAL_VIDEO_PLUGINS`
1619 This variable is specific to the :yocto_git:`GStreamer recipes
1620 </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
1621 It allows to build the GStreamer `"ugly"
1622 <https://github.com/GStreamer/gst-plugins-ugly>`__ and
1623 `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ video plugins.
1624
1625 See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
1626 section for usage details.
1627
1181 :term:`COMMON_LICENSE_DIR` 1628 :term:`COMMON_LICENSE_DIR`
1182 Points to ``meta/files/common-licenses`` in the 1629 Points to ``meta/files/common-licenses`` in the
1183 :term:`Source Directory`, which is where generic license 1630 :term:`Source Directory`, which is where generic license
@@ -1204,35 +1651,63 @@ system and gives an overview of their function and contents.
1204 speed since the build system skips parsing recipes not compatible 1651 speed since the build system skips parsing recipes not compatible
1205 with the current machine. 1652 with the current machine.
1206 1653
1654 If one wants to have a recipe only available for some architectures
1655 (here ``aarch64`` and ``mips64``), the following can be used::
1656
1657 COMPATIBLE_MACHINE = "^$"
1658 COMPATIBLE_MACHINE:arch64 = "^(aarch64)$"
1659 COMPATIBLE_MACHINE:mips64 = "^(mips64)$"
1660
1661 The first line means "match all machines whose :term:`MACHINEOVERRIDES`
1662 contains the empty string", which will always be none.
1663
1664 The second is for matching all machines whose :term:`MACHINEOVERRIDES`
1665 contains one override which is exactly ``aarch64``.
1666
1667 The third is for matching all machines whose :term:`MACHINEOVERRIDES`
1668 contains one override which is exactly ``mips64``.
1669
1670 The same could be achieved with::
1671
1672 COMPATIBLE_MACHINE = "^(aarch64|mips64)$"
1673
1674 .. note::
1675
1676 When :term:`COMPATIBLE_MACHINE` is set in a recipe inherits from
1677 native, the recipe is always skipped. All native recipes must be
1678 entirely target independent and should not rely on :term:`MACHINE`.
1679
1207 :term:`COMPLEMENTARY_GLOB` 1680 :term:`COMPLEMENTARY_GLOB`
1208 Defines wildcards to match when installing a list of complementary 1681 Defines wildcards to match when installing a list of complementary
1209 packages for all the packages explicitly (or implicitly) installed in 1682 packages for all the packages explicitly (or implicitly) installed in
1210 an image. 1683 an image.
1211 1684
1212 .. note:: 1685 The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching
1213 1686 (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__),
1214 The ``COMPLEMENTARY_GLOB`` variable uses Unix filename pattern matching 1687 which is similar to the Unix style pathname pattern expansion
1215 (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__), 1688 (`glob <https://docs.python.org/3/library/glob.html>`__).
1216 which is similar to the Unix style pathname pattern expansion
1217 (`glob <https://docs.python.org/3/library/glob.html>`__).
1218 1689
1219 The resulting list of complementary packages is associated with an 1690 The resulting list of complementary packages is associated with an
1220 item that can be added to 1691 item that can be added to
1221 :term:`IMAGE_FEATURES`. An example usage of 1692 :term:`IMAGE_FEATURES`. An example usage of
1222 this is the "dev-pkgs" item that when added to ``IMAGE_FEATURES`` 1693 this is the "dev-pkgs" item that when added to :term:`IMAGE_FEATURES`
1223 will install -dev packages (containing headers and other development 1694 will install -dev packages (containing headers and other development
1224 files) for every package in the image. 1695 files) for every package in the image.
1225 1696
1226 To add a new feature item pointing to a wildcard, use a variable flag 1697 To add a new feature item pointing to a wildcard, use a variable flag
1227 to specify the feature item name and use the value to specify the 1698 to specify the feature item name and use the value to specify the
1228 wildcard. Here is an example: 1699 wildcard. Here is an example::
1229 ::
1230 1700
1231 COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev' 1701 COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
1232 1702
1703 .. note::
1704
1705 When installing complementary packages, recommends relationships
1706 (set via :term:`RRECOMMENDS`) are always ignored.
1707
1233 :term:`COMPONENTS_DIR` 1708 :term:`COMPONENTS_DIR`
1234 Stores sysroot components for each recipe. The OpenEmbedded build 1709 Stores sysroot components for each recipe. The OpenEmbedded build
1235 system uses ``COMPONENTS_DIR`` when constructing recipe-specific 1710 system uses :term:`COMPONENTS_DIR` when constructing recipe-specific
1236 sysroots for other recipes. 1711 sysroots for other recipes.
1237 1712
1238 The default is 1713 The default is
@@ -1242,7 +1717,7 @@ system and gives an overview of their function and contents.
1242 1717
1243 :term:`CONF_VERSION` 1718 :term:`CONF_VERSION`
1244 Tracks the version of the local configuration file (i.e. 1719 Tracks the version of the local configuration file (i.e.
1245 ``local.conf``). The value for ``CONF_VERSION`` increments each time 1720 ``local.conf``). The value for :term:`CONF_VERSION` increments each time
1246 ``build/conf/`` compatibility changes. 1721 ``build/conf/`` compatibility changes.
1247 1722
1248 :term:`CONFFILES` 1723 :term:`CONFFILES`
@@ -1252,29 +1727,28 @@ system and gives an overview of their function and contents.
1252 files you have changed after the original installation and that you 1727 files you have changed after the original installation and that you
1253 now want to remain unchanged are overwritten. In other words, 1728 now want to remain unchanged are overwritten. In other words,
1254 editable files might exist in the package that you do not want reset 1729 editable files might exist in the package that you do not want reset
1255 as part of the package update process. You can use the ``CONFFILES`` 1730 as part of the package update process. You can use the :term:`CONFFILES`
1256 variable to list the files in the package that you wish to prevent 1731 variable to list the files in the package that you wish to prevent
1257 the PMS from overwriting during this update process. 1732 the PMS from overwriting during this update process.
1258 1733
1259 To use the ``CONFFILES`` variable, provide a package name override 1734 To use the :term:`CONFFILES` variable, provide a package name override
1260 that identifies the resulting package. Then, provide a 1735 that identifies the resulting package. Then, provide a
1261 space-separated list of files. Here is an example: 1736 space-separated list of files. Here is an example::
1262 ::
1263 1737
1264 CONFFILES_${PN} += "${sysconfdir}/file1 \ 1738 CONFFILES:${PN} += "${sysconfdir}/file1 \
1265 ${sysconfdir}/file2 ${sysconfdir}/file3" 1739 ${sysconfdir}/file2 ${sysconfdir}/file3"
1266 1740
1267 A relationship exists between the ``CONFFILES`` and ``FILES`` 1741 There is a relationship between the :term:`CONFFILES` and :term:`FILES`
1268 variables. The files listed within ``CONFFILES`` must be a subset of 1742 variables. The files listed within :term:`CONFFILES` must be a subset of
1269 the files listed within ``FILES``. Because the configuration files 1743 the files listed within :term:`FILES`. Because the configuration files
1270 you provide with ``CONFFILES`` are simply being identified so that 1744 you provide with :term:`CONFFILES` are simply being identified so that
1271 the PMS will not overwrite them, it makes sense that the files must 1745 the PMS will not overwrite them, it makes sense that the files must
1272 already be included as part of the package through the ``FILES`` 1746 already be included as part of the package through the :term:`FILES`
1273 variable. 1747 variable.
1274 1748
1275 .. note:: 1749 .. note::
1276 1750
1277 When specifying paths as part of the ``CONFFILES`` variable, it is 1751 When specifying paths as part of the :term:`CONFFILES` variable, it is
1278 good practice to use appropriate path variables. 1752 good practice to use appropriate path variables.
1279 For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}`` 1753 For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}``
1280 rather than ``/usr/bin``. You can find a list of these variables at 1754 rather than ``/usr/bin``. You can find a list of these variables at
@@ -1282,24 +1756,24 @@ system and gives an overview of their function and contents.
1282 :term:`Source Directory`. 1756 :term:`Source Directory`.
1283 1757
1284 :term:`CONFIG_INITRAMFS_SOURCE` 1758 :term:`CONFIG_INITRAMFS_SOURCE`
1285 Identifies the initial RAM filesystem (initramfs) source files. The 1759 Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The
1286 OpenEmbedded build system receives and uses this kernel Kconfig 1760 OpenEmbedded build system receives and uses this kernel Kconfig
1287 variable as an environment variable. By default, the variable is set 1761 variable as an environment variable. By default, the variable is set
1288 to null (""). 1762 to null ("").
1289 1763
1290 The ``CONFIG_INITRAMFS_SOURCE`` can be either a single cpio archive 1764 The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive
1291 with a ``.cpio`` suffix or a space-separated list of directories and 1765 with a ``.cpio`` suffix or a space-separated list of directories and
1292 files for building the initramfs image. A cpio archive should contain 1766 files for building the :term:`Initramfs` image. A cpio archive should contain
1293 a filesystem archive to be used as an initramfs image. Directories 1767 a filesystem archive to be used as an :term:`Initramfs` image. Directories
1294 should contain a filesystem layout to be included in the initramfs 1768 should contain a filesystem layout to be included in the :term:`Initramfs`
1295 image. Files should contain entries according to the format described 1769 image. Files should contain entries according to the format described
1296 by the ``usr/gen_init_cpio`` program in the kernel tree. 1770 by the ``usr/gen_init_cpio`` program in the kernel tree.
1297 1771
1298 If you specify multiple directories and files, the initramfs image 1772 If you specify multiple directories and files, the :term:`Initramfs` image
1299 will be the aggregate of all of them. 1773 will be the aggregate of all of them.
1300 1774
1301 For information on creating an initramfs, see the 1775 For information on creating an :term:`Initramfs`, see the
1302 ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 1776 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
1303 in the Yocto Project Development Tasks Manual. 1777 in the Yocto Project Development Tasks Manual.
1304 1778
1305 :term:`CONFIG_SITE` 1779 :term:`CONFIG_SITE`
@@ -1310,83 +1784,38 @@ system and gives an overview of their function and contents.
1310 :term:`CONFIGURE_FLAGS` 1784 :term:`CONFIGURE_FLAGS`
1311 The minimal arguments for GNU configure. 1785 The minimal arguments for GNU configure.
1312 1786
1787 :term:`CONFIGURE_SCRIPT`
1788 When using the :ref:`ref-classes-autotools` class, the
1789 :term:`CONFIGURE_SCRIPT` variable stores the location of the ``configure``
1790 script for the Autotools build system. The default definition for this
1791 variable is::
1792
1793 CONFIGURE_SCRIPT ?= "${AUTOTOOLS_SCRIPT_PATH}/configure"
1794
1795 Where :term:`AUTOTOOLS_SCRIPT_PATH` is the location of the of the
1796 Autotools build system scripts, which defaults to :term:`S`.
1797
1313 :term:`CONFLICT_DISTRO_FEATURES` 1798 :term:`CONFLICT_DISTRO_FEATURES`
1314 When inheriting the 1799 When inheriting the :ref:`ref-classes-features_check`
1315 :ref:`features_check <ref-classes-features_check>`
1316 class, this variable identifies distribution features that would be 1800 class, this variable identifies distribution features that would be
1317 in conflict should the recipe be built. In other words, if the 1801 in conflict should the recipe be built. In other words, if the
1318 ``CONFLICT_DISTRO_FEATURES`` variable lists a feature that also 1802 :term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also
1319 appears in ``DISTRO_FEATURES`` within the current configuration, then 1803 appears in :term:`DISTRO_FEATURES` within the current configuration, then
1320 the recipe will be skipped, and if the build system attempts to build 1804 the recipe will be skipped, and if the build system attempts to build
1321 the recipe then an error will be triggered. 1805 the recipe then an error will be triggered.
1322 1806
1323 :term:`COPYLEFT_LICENSE_EXCLUDE` 1807 :term:`CONVERSION_CMD`
1324 A space-separated list of licenses to exclude from the source 1808 This variable is used for storing image conversion commands.
1325 archived by the :ref:`archiver <ref-classes-archiver>` class. In 1809 Image conversion can convert an image into different objects like:
1326 other words, if a license in a recipe's
1327 :term:`LICENSE` value is in the value of
1328 ``COPYLEFT_LICENSE_EXCLUDE``, then its source is not archived by the
1329 class.
1330
1331 .. note::
1332
1333 The ``COPYLEFT_LICENSE_EXCLUDE`` variable takes precedence over the
1334 :term:`COPYLEFT_LICENSE_INCLUDE` variable.
1335
1336 The default value, which is "CLOSED Proprietary", for
1337 ``COPYLEFT_LICENSE_EXCLUDE`` is set by the
1338 :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
1339 is inherited by the ``archiver`` class.
1340
1341 :term:`COPYLEFT_LICENSE_INCLUDE`
1342 A space-separated list of licenses to include in the source archived
1343 by the :ref:`archiver <ref-classes-archiver>` class. In other
1344 words, if a license in a recipe's :term:`LICENSE`
1345 value is in the value of ``COPYLEFT_LICENSE_INCLUDE``, then its
1346 source is archived by the class.
1347
1348 The default value is set by the
1349 :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
1350 is inherited by the ``archiver`` class. The default value includes
1351 "GPL*", "LGPL*", and "AGPL*".
1352
1353 :term:`COPYLEFT_PN_EXCLUDE`
1354 A list of recipes to exclude in the source archived by the
1355 :ref:`archiver <ref-classes-archiver>` class. The
1356 ``COPYLEFT_PN_EXCLUDE`` variable overrides the license inclusion and
1357 exclusion caused through the
1358 :term:`COPYLEFT_LICENSE_INCLUDE` and
1359 :term:`COPYLEFT_LICENSE_EXCLUDE`
1360 variables, respectively.
1361
1362 The default value, which is "" indicating to not explicitly exclude
1363 any recipes by name, for ``COPYLEFT_PN_EXCLUDE`` is set by the
1364 :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
1365 is inherited by the ``archiver`` class.
1366 1810
1367 :term:`COPYLEFT_PN_INCLUDE` 1811 - Compressed version of the image
1368 A list of recipes to include in the source archived by the
1369 :ref:`archiver <ref-classes-archiver>` class. The
1370 ``COPYLEFT_PN_INCLUDE`` variable overrides the license inclusion and
1371 exclusion caused through the
1372 :term:`COPYLEFT_LICENSE_INCLUDE` and
1373 :term:`COPYLEFT_LICENSE_EXCLUDE`
1374 variables, respectively.
1375 1812
1376 The default value, which is "" indicating to not explicitly include 1813 - Checksums for the image
1377 any recipes by name, for ``COPYLEFT_PN_INCLUDE`` is set by the
1378 :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
1379 is inherited by the ``archiver`` class.
1380 1814
1381 :term:`COPYLEFT_RECIPE_TYPES` 1815 An example of :term:`CONVERSION_CMD` from :ref:`ref-classes-image_types`
1382 A space-separated list of recipe types to include in the source 1816 class is::
1383 archived by the :ref:`archiver <ref-classes-archiver>` class.
1384 Recipe types are ``target``, ``native``, ``nativesdk``, ``cross``,
1385 ``crosssdk``, and ``cross-canadian``.
1386 1817
1387 The default value, which is "target*", for ``COPYLEFT_RECIPE_TYPES`` 1818 CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
1388 is set by the :ref:`copyleft_filter <ref-classes-copyleft_filter>`
1389 class, which is inherited by the ``archiver`` class.
1390 1819
1391 :term:`COPY_LIC_DIRS` 1820 :term:`COPY_LIC_DIRS`
1392 If set to "1" along with the 1821 If set to "1" along with the
@@ -1398,11 +1827,11 @@ system and gives an overview of their function and contents.
1398 1827
1399 .. note:: 1828 .. note::
1400 1829
1401 The ``COPY_LIC_DIRS`` does not offer a path for adding licenses for 1830 The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for
1402 newly installed packages to an image, which might be most suitable for 1831 newly installed packages to an image, which might be most suitable for
1403 read-only filesystems that cannot be upgraded. See the 1832 read-only filesystems that cannot be upgraded. See the
1404 :term:`LICENSE_CREATE_PACKAGE` variable for additional information. 1833 :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1405 You can also reference the ":ref:`dev-manual/common-tasks:providing license text`" 1834 You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1406 section in the Yocto Project Development Tasks Manual for 1835 section in the Yocto Project Development Tasks Manual for
1407 information on providing license text. 1836 information on providing license text.
1408 1837
@@ -1414,14 +1843,77 @@ system and gives an overview of their function and contents.
1414 1843
1415 .. note:: 1844 .. note::
1416 1845
1417 The ``COPY_LIC_MANIFEST`` does not offer a path for adding licenses for 1846 The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for
1418 newly installed packages to an image, which might be most suitable for 1847 newly installed packages to an image, which might be most suitable for
1419 read-only filesystems that cannot be upgraded. See the 1848 read-only filesystems that cannot be upgraded. See the
1420 :term:`LICENSE_CREATE_PACKAGE` variable for additional information. 1849 :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
1421 You can also reference the ":ref:`dev-manual/common-tasks:providing license text`" 1850 You can also reference the ":ref:`dev-manual/licenses:providing license text`"
1422 section in the Yocto Project Development Tasks Manual for 1851 section in the Yocto Project Development Tasks Manual for
1423 information on providing license text. 1852 information on providing license text.
1424 1853
1854 :term:`COPYLEFT_LICENSE_EXCLUDE`
1855 A space-separated list of licenses to exclude from the source archived by
1856 the :ref:`ref-classes-archiver` class. In other words, if a license in a
1857 recipe's :term:`LICENSE` value is in the value of
1858 :term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the
1859 class.
1860
1861 .. note::
1862
1863 The :term:`COPYLEFT_LICENSE_EXCLUDE` variable takes precedence over the
1864 :term:`COPYLEFT_LICENSE_INCLUDE` variable.
1865
1866 The default value, which is "CLOSED Proprietary", for
1867 :term:`COPYLEFT_LICENSE_EXCLUDE` is set by the
1868 :ref:`ref-classes-copyleft_filter` class, which
1869 is inherited by the :ref:`ref-classes-archiver` class.
1870
1871 :term:`COPYLEFT_LICENSE_INCLUDE`
1872 A space-separated list of licenses to include in the source archived
1873 by the :ref:`ref-classes-archiver` class. In other
1874 words, if a license in a recipe's :term:`LICENSE`
1875 value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its
1876 source is archived by the class.
1877
1878 The default value is set by the :ref:`ref-classes-copyleft_filter` class,
1879 which is inherited by the :ref:`ref-classes-archiver` class. The default
1880 value includes "GPL*", "LGPL*", and "AGPL*".
1881
1882 :term:`COPYLEFT_PN_EXCLUDE`
1883 A list of recipes to exclude in the source archived by the
1884 :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_EXCLUDE`
1885 variable overrides the license inclusion and exclusion caused through the
1886 :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1887 variables, respectively.
1888
1889 The default value, which is "" indicating to not explicitly exclude
1890 any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the
1891 :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1892 :ref:`ref-classes-archiver` class.
1893
1894 :term:`COPYLEFT_PN_INCLUDE`
1895 A list of recipes to include in the source archived by the
1896 :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_INCLUDE`
1897 variable overrides the license inclusion and exclusion caused through the
1898 :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
1899 variables, respectively.
1900
1901 The default value, which is "" indicating to not explicitly include
1902 any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the
1903 :ref:`ref-classes-copyleft_filter` class, which is inherited by the
1904 :ref:`ref-classes-archiver` class.
1905
1906 :term:`COPYLEFT_RECIPE_TYPES`
1907 A space-separated list of recipe types to include in the source
1908 archived by the :ref:`archiver <ref-classes-archiver>` class.
1909 Recipe types are ``target``, :ref:`ref-classes-native`,
1910 :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`,
1911 :ref:`ref-classes-crosssdk`, and :ref:`ref-classes-cross-canadian`.
1912
1913 The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES`
1914 is set by the :ref:`ref-classes-copyleft_filter` class, which is
1915 inherited by the :ref:`ref-classes-archiver` class.
1916
1425 :term:`CORE_IMAGE_EXTRA_INSTALL` 1917 :term:`CORE_IMAGE_EXTRA_INSTALL`
1426 Specifies the list of packages to be added to the image. You should 1918 Specifies the list of packages to be added to the image. You should
1427 only set this variable in the ``local.conf`` configuration file found 1919 only set this variable in the ``local.conf`` configuration file found
@@ -1434,24 +1926,24 @@ system and gives an overview of their function and contents.
1434 Specifies the parent directory of the OpenEmbedded-Core Metadata 1926 Specifies the parent directory of the OpenEmbedded-Core Metadata
1435 layer (i.e. ``meta``). 1927 layer (i.e. ``meta``).
1436 1928
1437 It is an important distinction that ``COREBASE`` points to the parent 1929 It is an important distinction that :term:`COREBASE` points to the parent
1438 of this layer and not the layer itself. Consider an example where you 1930 of this layer and not the layer itself. Consider an example where you
1439 have cloned the Poky Git repository and retained the ``poky`` name 1931 have cloned the Poky Git repository and retained the ``poky`` name
1440 for your local copy of the repository. In this case, ``COREBASE`` 1932 for your local copy of the repository. In this case, :term:`COREBASE`
1441 points to the ``poky`` folder because it is the parent directory of 1933 points to the ``poky`` folder because it is the parent directory of
1442 the ``poky/meta`` layer. 1934 the ``poky/meta`` layer.
1443 1935
1444 :term:`COREBASE_FILES` 1936 :term:`COREBASE_FILES`
1445 Lists files from the :term:`COREBASE` directory that 1937 Lists files from the :term:`COREBASE` directory that
1446 should be copied other than the layers listed in the 1938 should be copied other than the layers listed in the
1447 ``bblayers.conf`` file. The ``COREBASE_FILES`` variable exists for 1939 ``bblayers.conf`` file. The :term:`COREBASE_FILES` variable allows
1448 the purpose of copying metadata from the OpenEmbedded build system 1940 to copy metadata from the OpenEmbedded build system
1449 into the extensible SDK. 1941 into the extensible SDK.
1450 1942
1451 Explicitly listing files in ``COREBASE`` is needed because it 1943 Explicitly listing files in :term:`COREBASE` is needed because it
1452 typically contains build directories and other files that should not 1944 typically contains build directories and other files that should not
1453 normally be copied into the extensible SDK. Consequently, the value 1945 normally be copied into the extensible SDK. Consequently, the value
1454 of ``COREBASE_FILES`` is used in order to only copy the files that 1946 of :term:`COREBASE_FILES` is used in order to only copy the files that
1455 are actually needed. 1947 are actually needed.
1456 1948
1457 :term:`CPP` 1949 :term:`CPP`
@@ -1463,7 +1955,7 @@ system and gives an overview of their function and contents.
1463 variable and thus made visible to the software being built during the 1955 variable and thus made visible to the software being built during the
1464 compilation step. 1956 compilation step.
1465 1957
1466 Default initialization for ``CPPFLAGS`` varies depending on what is 1958 Default initialization for :term:`CPPFLAGS` varies depending on what is
1467 being built: 1959 being built:
1468 1960
1469 - :term:`TARGET_CPPFLAGS` when building for 1961 - :term:`TARGET_CPPFLAGS` when building for
@@ -1477,15 +1969,128 @@ system and gives an overview of their function and contents.
1477 1969
1478 :term:`CROSS_COMPILE` 1970 :term:`CROSS_COMPILE`
1479 The toolchain binary prefix for the target tools. The 1971 The toolchain binary prefix for the target tools. The
1480 ``CROSS_COMPILE`` variable is the same as the 1972 :term:`CROSS_COMPILE` variable is the same as the
1481 :term:`TARGET_PREFIX` variable. 1973 :term:`TARGET_PREFIX` variable.
1482 1974
1483 .. note:: 1975 .. note::
1484 1976
1485 The OpenEmbedded build system sets the ``CROSS_COMPILE`` 1977 The OpenEmbedded build system sets the :term:`CROSS_COMPILE`
1486 variable only in certain contexts (e.g. when building for kernel 1978 variable only in certain contexts (e.g. when building for kernel
1487 and kernel module recipes). 1979 and kernel module recipes).
1488 1980
1981 :term:`CVE_CHECK_CREATE_MANIFEST`
1982 Specifies whether to create a CVE manifest to place in the deploy
1983 directory. The default is "1".
1984
1985 :term:`CVE_CHECK_IGNORE`
1986 This variable is deprecated and should be replaced by :term:`CVE_STATUS`.
1987
1988 :term:`CVE_CHECK_MANIFEST_JSON`
1989 Specifies the path to the CVE manifest in JSON format. See
1990 :term:`CVE_CHECK_CREATE_MANIFEST`.
1991
1992 :term:`CVE_CHECK_MANIFEST_JSON_SUFFIX`
1993 Allows to modify the JSON manifest suffix. See
1994 :term:`CVE_CHECK_MANIFEST_JSON`.
1995
1996 :term:`CVE_CHECK_REPORT_PATCHED`
1997 Specifies whether or not the :ref:`ref-classes-cve-check`
1998 class should report patched or ignored CVEs. The default is "1", but you
1999 may wish to set it to "0" if you do not need patched or ignored CVEs in
2000 the logs.
2001
2002 :term:`CVE_CHECK_SHOW_WARNINGS`
2003 Specifies whether or not the :ref:`ref-classes-cve-check`
2004 class should generate warning messages on the console when unpatched
2005 CVEs are found. The default is "1", but you may wish to set it to "0" if
2006 you are already examining/processing the logs after the build has
2007 completed and thus do not need the warning messages.
2008
2009 :term:`CVE_CHECK_SKIP_RECIPE`
2010 The list of package names (:term:`PN`) for which
2011 CVEs (Common Vulnerabilities and Exposures) are ignored.
2012
2013 :term:`CVE_CHECK_STATUSMAP`
2014 Mapping variable for all possible reasons of :term:`CVE_STATUS`:
2015 ``Patched``, ``Unpatched`` and ``Ignored``.
2016 See :ref:`ref-classes-cve-check` or ``meta/conf/cve-check-map.conf`` for more details::
2017
2018 CVE_CHECK_STATUSMAP[cpe-incorrect] = "Ignored"
2019
2020 :term:`CVE_CHECK_VEX_JUSTIFICATION`
2021 Mapping variable for :term:`CVE_STATUS` reasons
2022 (for example ``not-applicable-platform``) to :ref:`ref-classes-vex`
2023 justifications. Should be set as follows::
2024
2025 CVE_CHECK_VEX_JUSTIFICATION[not-applicable-config] = "vulnerableCodeNotPresent"
2026
2027 :term:`CVE_DB_INCR_UPDATE_AGE_THRES`
2028 Specifies the maximum age of the CVE database in seconds for an
2029 incremental update (instead of a full-download). Use "0" to force a
2030 full-download.
2031
2032 :term:`CVE_DB_UPDATE_INTERVAL`
2033 Specifies the CVE database update interval in seconds, as used by
2034 ``cve-update-db-native``. The default value is "86400" i.e. once a day
2035 (24*60*60). If the value is set to "0" then the update will be forced
2036 every time. Alternatively, a negative value e.g. "-1" will disable
2037 updates entirely.
2038
2039 :term:`CVE_PRODUCT`
2040 In a recipe, defines the name used to match the recipe name
2041 against the name in the upstream `NIST CVE database <https://nvd.nist.gov/>`__.
2042
2043 The default is ${:term:`BPN`} (except for recipes that inherit the
2044 :ref:`ref-classes-pypi` class where it is set based upon
2045 :term:`PYPI_PACKAGE`). If it does not match the name in the NIST CVE
2046 database or matches with multiple entries in the database, the default
2047 value needs to be changed.
2048
2049 Here is an example from the :oe_layerindex:`Berkeley DB recipe </layerindex/recipe/544>`::
2050
2051 CVE_PRODUCT = "oracle_berkeley_db berkeley_db"
2052
2053 Sometimes the product name is not specific enough, for example
2054 "tar" has been matching CVEs for the GNU ``tar`` package and also
2055 the ``node-tar`` node.js extension. To avoid this problem, use the
2056 vendor name as a prefix. The syntax for this is::
2057
2058 CVE_PRODUCT = "vendor:package"
2059
2060 :term:`CVE_STATUS`
2061 The CVE ID which is patched or should be ignored. Here is
2062 an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`::
2063
2064 CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows"
2065
2066 It has the format "reason: description" and the description is optional.
2067 The Reason is mapped to the final CVE state by mapping via
2068 :term:`CVE_CHECK_STATUSMAP`. See :ref:`dev-manual/vulnerabilities:fixing vulnerabilities in recipes`
2069 for details.
2070
2071 :term:`CVE_STATUS_GROUPS`
2072 If there are many CVEs with the same status and reason, they can by simplified by using this
2073 variable instead of many similar lines with :term:`CVE_STATUS`::
2074
2075 CVE_STATUS_GROUPS = "CVE_STATUS_WIN CVE_STATUS_PATCHED"
2076
2077 CVE_STATUS_WIN = "CVE-1234-0001 CVE-1234-0002"
2078 CVE_STATUS_WIN[status] = "not-applicable-platform: Issue only applies on Windows"
2079 CVE_STATUS_PATCHED = "CVE-1234-0003 CVE-1234-0004"
2080 CVE_STATUS_PATCHED[status] = "fixed-version: Fixed externally"
2081
2082 :term:`CVE_VERSION`
2083 In a recipe, defines the version used to match the recipe version
2084 against the version in the `NIST CVE database <https://nvd.nist.gov/>`__
2085 when usign :ref:`ref-classes-cve-check`.
2086
2087 The default is ${:term:`PV`} but if recipes use custom version numbers
2088 which do not map to upstream software component release versions and the versions
2089 used in the CVE database, then this variable can be used to set the
2090 version number for :ref:`ref-classes-cve-check`. Example::
2091
2092 CVE_VERSION = "2.39"
2093
1489 :term:`CVSDIR` 2094 :term:`CVSDIR`
1490 The directory in which files checked out under the CVS system are 2095 The directory in which files checked out under the CVS system are
1491 stored. 2096 stored.
@@ -1498,7 +2103,7 @@ system and gives an overview of their function and contents.
1498 exported to an environment variable and thus made visible to the 2103 exported to an environment variable and thus made visible to the
1499 software being built during the compilation step. 2104 software being built during the compilation step.
1500 2105
1501 Default initialization for ``CXXFLAGS`` varies depending on what is 2106 Default initialization for :term:`CXXFLAGS` varies depending on what is
1502 being built: 2107 being built:
1503 2108
1504 - :term:`TARGET_CXXFLAGS` when building for 2109 - :term:`TARGET_CXXFLAGS` when building for
@@ -1514,8 +2119,7 @@ system and gives an overview of their function and contents.
1514 The destination directory. The location in the :term:`Build Directory` 2119 The destination directory. The location in the :term:`Build Directory`
1515 where components are installed by the 2120 where components are installed by the
1516 :ref:`ref-tasks-install` task. This location defaults 2121 :ref:`ref-tasks-install` task. This location defaults
1517 to: 2122 to::
1518 ::
1519 2123
1520 ${WORKDIR}/image 2124 ${WORKDIR}/image
1521 2125
@@ -1533,54 +2137,76 @@ system and gives an overview of their function and contents.
1533 suitable for timestamps. 2137 suitable for timestamps.
1534 2138
1535 :term:`DEBIAN_NOAUTONAME` 2139 :term:`DEBIAN_NOAUTONAME`
1536 When the :ref:`debian <ref-classes-debian>` class is inherited, 2140 When the :ref:`ref-classes-debian` class is inherited,
1537 which is the default behavior, ``DEBIAN_NOAUTONAME`` specifies a 2141 which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a
1538 particular package should not be renamed according to Debian library 2142 particular package should not be renamed according to Debian library
1539 package naming. You must use the package name as an override when you 2143 package naming. You must use the package name as an override when you
1540 set this variable. Here is an example from the ``fontconfig`` recipe: 2144 set this variable. Here is an example from the ``fontconfig`` recipe::
1541 ::
1542 2145
1543 DEBIAN_NOAUTONAME_fontconfig-utils = "1" 2146 DEBIAN_NOAUTONAME:fontconfig-utils = "1"
1544 2147
1545 :term:`DEBIANNAME` 2148 :term:`DEBIANNAME`
1546 When the :ref:`debian <ref-classes-debian>` class is inherited, 2149 When the :ref:`ref-classes-debian` class is inherited,
1547 which is the default behavior, ``DEBIANNAME`` allows you to override 2150 which is the default behavior, :term:`DEBIANNAME` allows you to override
1548 the library name for an individual package. Overriding the library 2151 the library name for an individual package. Overriding the library
1549 name in these cases is rare. You must use the package name as an 2152 name in these cases is rare. You must use the package name as an
1550 override when you set this variable. Here is an example from the 2153 override when you set this variable. Here is an example from the
1551 ``dbus`` recipe: 2154 ``dbus`` recipe::
1552 ::
1553 2155
1554 DEBIANNAME_${PN} = "dbus-1" 2156 DEBIANNAME:${PN} = "dbus-1"
1555 2157
1556 :term:`DEBUG_BUILD` 2158 :term:`DEBUG_BUILD`
1557 Specifies to build packages with debugging information. This 2159 Specifies to build packages with debugging information. This
1558 influences the value of the ``SELECTED_OPTIMIZATION`` variable. 2160 influences the value of the :term:`SELECTED_OPTIMIZATION` variable.
1559 2161
1560 :term:`DEBUG_OPTIMIZATION` 2162 :term:`DEBUG_OPTIMIZATION`
1561 The options to pass in ``TARGET_CFLAGS`` and ``CFLAGS`` when 2163 The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
1562 compiling a system for debugging. This variable defaults to "-O 2164 compiling a system for debugging. This variable defaults to "-O
1563 -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe". 2165 -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
1564 2166
2167 :term:`DEBUG_PREFIX_MAP`
2168 Allows to set C compiler options, such as ``-fdebug-prefix-map``,
2169 ``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to
2170 replace build-time paths by install-time ones in the debugging sections
2171 of binaries. This makes compiler output files location independent,
2172 at the cost of having to pass an extra command to tell the debugger
2173 where source files are.
2174
2175 This is used by the Yocto Project to guarantee
2176 :doc:`/test-manual/reproducible-builds` even when the source code of
2177 a package uses the ``__FILE__`` or ``assert()`` macros. See the
2178 `reproducible-builds.org <https://reproducible-builds.org/docs/build-path/>`__
2179 website for details.
2180
2181 This variable is set in the ``meta/conf/bitbake.conf`` file. It is
2182 not intended to be user-configurable.
2183
1565 :term:`DEFAULT_PREFERENCE` 2184 :term:`DEFAULT_PREFERENCE`
1566 Specifies a weak bias for recipe selection priority. 2185 Specifies a weak bias for recipe selection priority.
1567 2186
1568 The most common usage of this is variable is to set it to "-1" within 2187 The most common usage of this is variable is to set it to "-1" within
1569 a recipe for a development version of a piece of software. Using the 2188 a recipe for a development version of a piece of software. Using the
1570 variable in this way causes the stable version of the recipe to build 2189 variable in this way causes the stable version of the recipe to build
1571 by default in the absence of ``PREFERRED_VERSION`` being used to 2190 by default in the absence of :term:`PREFERRED_VERSION` being used to
1572 build the development version. 2191 build the development version.
1573 2192
1574 .. note:: 2193 .. note::
1575 2194
1576 The bias provided by ``DEFAULT_PREFERENCE`` is weak and is overridden 2195 The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden
1577 by :term:`BBFILE_PRIORITY` if that variable is different between two 2196 by :term:`BBFILE_PRIORITY` if that variable is different between two
1578 layers that contain different versions of the same recipe. 2197 layers that contain different versions of the same recipe.
1579 2198
2199 :term:`DEFAULT_TIMEZONE`
2200 Specifies the time zone set in the image.
2201
2202 This variable causes the ``tzdata`` package to configure
2203 ``${sysconfdir}/localtime`` accordingly. Valid values are all files
2204 found in ``/usr/share/zoneinfo`` like ``CET`` or ``Asia/Baku``.
2205
1580 :term:`DEFAULTTUNE` 2206 :term:`DEFAULTTUNE`
1581 The default CPU and Application Binary Interface (ABI) tunings (i.e. 2207 The default CPU and Application Binary Interface (ABI) tunings (i.e.
1582 the "tune") used by the OpenEmbedded build system. The 2208 the "tune") used by the OpenEmbedded build system. The
1583 ``DEFAULTTUNE`` helps define 2209 :term:`DEFAULTTUNE` helps define
1584 :term:`TUNE_FEATURES`. 2210 :term:`TUNE_FEATURES`.
1585 2211
1586 The default tune is either implicitly or explicitly set by the 2212 The default tune is either implicitly or explicitly set by the
@@ -1594,83 +2220,79 @@ system and gives an overview of their function and contents.
1594 needed by the recipe at build time. 2220 needed by the recipe at build time.
1595 2221
1596 As an example, consider a recipe ``foo`` that contains the following 2222 As an example, consider a recipe ``foo`` that contains the following
1597 assignment: 2223 assignment::
1598 ::
1599 2224
1600 DEPENDS = "bar" 2225 DEPENDS = "bar"
1601 2226
1602 The practical effect of the previous 2227 The practical effect of the previous assignment is that all files
1603 assignment is that all files installed by bar will be available in 2228 installed by bar will be available in the appropriate staging sysroot,
1604 the appropriate staging sysroot, given by the 2229 given by the :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time
1605 :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time the 2230 the :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is
1606 :ref:`ref-tasks-configure` task for ``foo`` runs. 2231 implemented by having :ref:`ref-tasks-configure` depend on the
1607 This mechanism is implemented by having ``do_configure`` depend on 2232 :ref:`ref-tasks-populate_sysroot` task of each recipe listed in
1608 the :ref:`ref-tasks-populate_sysroot` task of 2233 :term:`DEPENDS`, through a
1609 each recipe listed in ``DEPENDS``, through a 2234 ``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]``
1610 ``[``\ :ref:`deptask <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` 2235 declaration in the :ref:`ref-classes-base` class.
1611 declaration in the :ref:`base <ref-classes-base>` class.
1612 2236
1613 .. note:: 2237 .. note::
1614 2238
1615 It seldom is necessary to reference, for example, ``STAGING_DIR_HOST`` 2239 It seldom is necessary to reference, for example, :term:`STAGING_DIR_HOST`
1616 explicitly. The standard classes and build-related variables are 2240 explicitly. The standard classes and build-related variables are
1617 configured to automatically use the appropriate staging sysroots. 2241 configured to automatically use the appropriate staging sysroots.
1618 2242
1619 As another example, ``DEPENDS`` can also be used to add utilities 2243 As another example, :term:`DEPENDS` can also be used to add utilities
1620 that run on the build machine during the build. For example, a recipe 2244 that run on the build machine during the build. For example, a recipe
1621 that makes use of a code generator built by the recipe ``codegen`` 2245 that makes use of a code generator built by the recipe ``codegen``
1622 might have the following: 2246 might have the following::
1623 ::
1624 2247
1625 DEPENDS = "codegen-native" 2248 DEPENDS = "codegen-native"
1626 2249
1627 For more 2250 For more
1628 information, see the :ref:`native <ref-classes-native>` class and 2251 information, see the :ref:`ref-classes-native` class and
1629 the :term:`EXTRANATIVEPATH` variable. 2252 the :term:`EXTRANATIVEPATH` variable.
1630 2253
1631 .. note:: 2254 .. note::
1632 2255
1633 - ``DEPENDS`` is a list of recipe names. Or, to be more precise, 2256 - :term:`DEPENDS` is a list of recipe names. Or, to be more precise,
1634 it is a list of :term:`PROVIDES` names, which 2257 it is a list of :term:`PROVIDES` names, which
1635 usually match recipe names. Putting a package name such as 2258 usually match recipe names. Putting a package name such as
1636 "foo-dev" in ``DEPENDS`` does not make sense. Use "foo" 2259 "foo-dev" in :term:`DEPENDS` does not make sense. Use "foo"
1637 instead, as this will put files from all the packages that make 2260 instead, as this will put files from all the packages that make
1638 up ``foo``, which includes those from ``foo-dev``, into the 2261 up ``foo``, which includes those from ``foo-dev``, into the
1639 sysroot. 2262 sysroot.
1640 2263
1641 - One recipe having another recipe in ``DEPENDS`` does not by 2264 - One recipe having another recipe in :term:`DEPENDS` does not by
1642 itself add any runtime dependencies between the packages 2265 itself add any runtime dependencies between the packages
1643 produced by the two recipes. However, as explained in the 2266 produced by the two recipes. However, as explained in the
1644 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 2267 ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
1645 section in the Yocto Project Overview and Concepts Manual, 2268 section in the Yocto Project Overview and Concepts Manual,
1646 runtime dependencies will often be added automatically, meaning 2269 runtime dependencies will often be added automatically, meaning
1647 ``DEPENDS`` alone is sufficient for most recipes. 2270 :term:`DEPENDS` alone is sufficient for most recipes.
1648 2271
1649 - Counterintuitively, ``DEPENDS`` is often necessary even for 2272 - Counterintuitively, :term:`DEPENDS` is often necessary even for
1650 recipes that install precompiled components. For example, if 2273 recipes that install precompiled components. For example, if
1651 ``libfoo`` is a precompiled library that links against 2274 ``libfoo`` is a precompiled library that links against
1652 ``libbar``, then linking against ``libfoo`` requires both 2275 ``libbar``, then linking against ``libfoo`` requires both
1653 ``libfoo`` and ``libbar`` to be available in the sysroot. 2276 ``libfoo`` and ``libbar`` to be available in the sysroot.
1654 Without a ``DEPENDS`` from the recipe that installs ``libfoo`` 2277 Without a :term:`DEPENDS` from the recipe that installs ``libfoo``
1655 to the recipe that installs ``libbar``, other recipes might 2278 to the recipe that installs ``libbar``, other recipes might
1656 fail to link against ``libfoo``. 2279 fail to link against ``libfoo``.
1657 2280
1658 For information on runtime dependencies, see the 2281 For information on runtime dependencies, see the :term:`RDEPENDS`
1659 :term:`RDEPENDS` variable. You can also see the 2282 variable. You can also see the
1660 ":ref:`Tasks <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:tasks>`" and 2283 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
1661 ":ref:`Dependencies <bitbake:bitbake-user-manual/bitbake-user-manual-execution:dependencies>`" sections in the 2284 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`"
1662 BitBake User Manual for additional information on tasks and 2285 sections in the BitBake User Manual for additional information on tasks
1663 dependencies. 2286 and dependencies.
1664 2287
1665 :term:`DEPLOY_DIR` 2288 :term:`DEPLOY_DIR`
1666 Points to the general area that the OpenEmbedded build system uses to 2289 Points to the general area that the OpenEmbedded build system uses to
1667 place images, packages, SDKs, and other output files that are ready 2290 place images, packages, SDKs, and other output files that are ready
1668 to be used outside of the build system. By default, this directory 2291 to be used outside of the build system. By default, this directory
1669 resides within the :term:`Build Directory` as 2292 resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``.
1670 ``${TMPDIR}/deploy``.
1671 2293
1672 For more information on the structure of the Build Directory, see 2294 For more information on the structure of the Build Directory, see
1673 ":ref:`ref-manual/structure:the build directory - \`\`build/\`\``" section. 2295 ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
1674 For more detail on the contents of the ``deploy`` directory, see the 2296 For more detail on the contents of the ``deploy`` directory, see the
1675 ":ref:`overview-manual/concepts:images`", 2297 ":ref:`overview-manual/concepts:images`",
1676 ":ref:`overview-manual/concepts:package feeds`", and 2298 ":ref:`overview-manual/concepts:package feeds`", and
@@ -1680,19 +2302,17 @@ system and gives an overview of their function and contents.
1680 :term:`DEPLOY_DIR_DEB` 2302 :term:`DEPLOY_DIR_DEB`
1681 Points to the area that the OpenEmbedded build system uses to place 2303 Points to the area that the OpenEmbedded build system uses to place
1682 Debian packages that are ready to be used outside of the build 2304 Debian packages that are ready to be used outside of the build
1683 system. This variable applies only when 2305 system. This variable applies only when :term:`PACKAGE_CLASSES` contains
1684 :term:`PACKAGE_CLASSES` contains 2306 ":ref:`ref-classes-package_deb`".
1685 "package_deb".
1686 2307
1687 The BitBake configuration file initially defines the 2308 The BitBake configuration file initially defines the
1688 ``DEPLOY_DIR_DEB`` variable as a sub-folder of 2309 :term:`DEPLOY_DIR_DEB` variable as a sub-folder of
1689 :term:`DEPLOY_DIR`: 2310 :term:`DEPLOY_DIR`::
1690 ::
1691 2311
1692 DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb" 2312 DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
1693 2313
1694 The :ref:`package_deb <ref-classes-package_deb>` class uses the 2314 The :ref:`ref-classes-package_deb` class uses the
1695 ``DEPLOY_DIR_DEB`` variable to make sure the 2315 :term:`DEPLOY_DIR_DEB` variable to make sure the
1696 :ref:`ref-tasks-package_write_deb` task 2316 :ref:`ref-tasks-package_write_deb` task
1697 writes Debian packages into the appropriate folder. For more 2317 writes Debian packages into the appropriate folder. For more
1698 information on how packaging works, see the 2318 information on how packaging works, see the
@@ -1707,8 +2327,14 @@ system and gives an overview of their function and contents.
1707 resides within the :term:`Build Directory` as 2327 resides within the :term:`Build Directory` as
1708 ``${DEPLOY_DIR}/images/${MACHINE}/``. 2328 ``${DEPLOY_DIR}/images/${MACHINE}/``.
1709 2329
1710 For more information on the structure of the Build Directory, see 2330 It must not be used directly in recipes when deploying files. Instead,
1711 ":ref:`ref-manual/structure:the build directory - \`\`build/\`\``" section. 2331 it's only useful when a recipe needs to "read" a file already deployed
2332 by a dependency. So, it should be filled with the contents of
2333 :term:`DEPLOYDIR` by the :ref:`ref-classes-deploy` class or with the
2334 contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class.
2335
2336 For more information on the structure of the :term:`Build Directory`, see
2337 ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
1712 For more detail on the contents of the ``deploy`` directory, see the 2338 For more detail on the contents of the ``deploy`` directory, see the
1713 ":ref:`overview-manual/concepts:images`" and 2339 ":ref:`overview-manual/concepts:images`" and
1714 ":ref:`overview-manual/concepts:application development sdk`" sections both in 2340 ":ref:`overview-manual/concepts:application development sdk`" sections both in
@@ -1717,19 +2343,16 @@ system and gives an overview of their function and contents.
1717 :term:`DEPLOY_DIR_IPK` 2343 :term:`DEPLOY_DIR_IPK`
1718 Points to the area that the OpenEmbedded build system uses to place 2344 Points to the area that the OpenEmbedded build system uses to place
1719 IPK packages that are ready to be used outside of the build system. 2345 IPK packages that are ready to be used outside of the build system.
1720 This variable applies only when 2346 This variable applies only when :term:`PACKAGE_CLASSES` contains
1721 :term:`PACKAGE_CLASSES` contains 2347 ":ref:`ref-classes-package_ipk`".
1722 "package_ipk".
1723 2348
1724 The BitBake configuration file initially defines this variable as a 2349 The BitBake configuration file initially defines this variable as a
1725 sub-folder of :term:`DEPLOY_DIR`: 2350 sub-folder of :term:`DEPLOY_DIR`::
1726 ::
1727 2351
1728 DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk" 2352 DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
1729 2353
1730 The :ref:`package_ipk <ref-classes-package_ipk>` class uses the 2354 The :ref:`ref-classes-package_ipk` class uses the :term:`DEPLOY_DIR_IPK`
1731 ``DEPLOY_DIR_IPK`` variable to make sure the 2355 variable to make sure the :ref:`ref-tasks-package_write_ipk` task
1732 :ref:`ref-tasks-package_write_ipk` task
1733 writes IPK packages into the appropriate folder. For more information 2356 writes IPK packages into the appropriate folder. For more information
1734 on how packaging works, see the 2357 on how packaging works, see the
1735 ":ref:`overview-manual/concepts:package feeds`" section 2358 ":ref:`overview-manual/concepts:package feeds`" section
@@ -1738,89 +2361,81 @@ system and gives an overview of their function and contents.
1738 :term:`DEPLOY_DIR_RPM` 2361 :term:`DEPLOY_DIR_RPM`
1739 Points to the area that the OpenEmbedded build system uses to place 2362 Points to the area that the OpenEmbedded build system uses to place
1740 RPM packages that are ready to be used outside of the build system. 2363 RPM packages that are ready to be used outside of the build system.
1741 This variable applies only when 2364 This variable applies only when :term:`PACKAGE_CLASSES` contains
1742 :term:`PACKAGE_CLASSES` contains 2365 ":ref:`ref-classes-package_rpm`".
1743 "package_rpm".
1744 2366
1745 The BitBake configuration file initially defines this variable as a 2367 The BitBake configuration file initially defines this variable as a
1746 sub-folder of :term:`DEPLOY_DIR`: 2368 sub-folder of :term:`DEPLOY_DIR`::
1747 ::
1748 2369
1749 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm" 2370 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
1750 2371
1751 The :ref:`package_rpm <ref-classes-package_rpm>` class uses the 2372 The :ref:`ref-classes-package_rpm` class uses the
1752 ``DEPLOY_DIR_RPM`` variable to make sure the 2373 :term:`DEPLOY_DIR_RPM` variable to make sure the
1753 :ref:`ref-tasks-package_write_rpm` task 2374 :ref:`ref-tasks-package_write_rpm` task
1754 writes RPM packages into the appropriate folder. For more information 2375 writes RPM packages into the appropriate folder. For more information
1755 on how packaging works, see the 2376 on how packaging works, see the
1756 ":ref:`overview-manual/concepts:package feeds`" section 2377 ":ref:`overview-manual/concepts:package feeds`" section
1757 in the Yocto Project Overview and Concepts Manual. 2378 in the Yocto Project Overview and Concepts Manual.
1758 2379
1759 :term:`DEPLOY_DIR_TAR`
1760 Points to the area that the OpenEmbedded build system uses to place
1761 tarballs that are ready to be used outside of the build system. This
1762 variable applies only when
1763 :term:`PACKAGE_CLASSES` contains
1764 "package_tar".
1765
1766 The BitBake configuration file initially defines this variable as a
1767 sub-folder of :term:`DEPLOY_DIR`:
1768 ::
1769
1770 DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
1771
1772 The :ref:`package_tar <ref-classes-package_tar>` class uses the
1773 ``DEPLOY_DIR_TAR`` variable to make sure the
1774 :ref:`ref-tasks-package_write_tar` task
1775 writes TAR packages into the appropriate folder. For more information
1776 on how packaging works, see the
1777 ":ref:`overview-manual/concepts:package feeds`" section
1778 in the Yocto Project Overview and Concepts Manual.
1779
1780 :term:`DEPLOYDIR` 2380 :term:`DEPLOYDIR`
1781 When inheriting the :ref:`deploy <ref-classes-deploy>` class, the 2381 When inheriting the :ref:`ref-classes-deploy` class, the
1782 ``DEPLOYDIR`` points to a temporary work area for deployed files that 2382 :term:`DEPLOYDIR` points to a temporary work area for deployed files that
1783 is set in the ``deploy`` class as follows: 2383 is set in the :ref:`ref-classes-deploy` class as follows::
1784 ::
1785 2384
1786 DEPLOYDIR = "${WORKDIR}/deploy-${PN}" 2385 DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
1787 2386
1788 Recipes inheriting the ``deploy`` class should copy files to be 2387 Recipes inheriting the :ref:`ref-classes-deploy` class should copy files to be
1789 deployed into ``DEPLOYDIR``, and the class will take care of copying 2388 deployed into :term:`DEPLOYDIR`, and the class will take care of copying
1790 them into :term:`DEPLOY_DIR_IMAGE` 2389 them into :term:`DEPLOY_DIR_IMAGE`
1791 afterwards. 2390 afterwards.
1792 2391
1793 :term:`DESCRIPTION` 2392 :term:`DESCRIPTION`
1794 The package description used by package managers. If not set, 2393 The package description used by package managers. If not set,
1795 ``DESCRIPTION`` takes the value of the :term:`SUMMARY` 2394 :term:`DESCRIPTION` takes the value of the :term:`SUMMARY`
1796 variable. 2395 variable.
1797 2396
2397 :term:`DEV_PKG_DEPENDENCY`
2398 Provides an easy way for recipes to disable or adjust the runtime recommendation
2399 (:term:`RRECOMMENDS`) of the ``${PN}-dev`` package on the main
2400 (``${PN}``) package.
2401
2402 :term:`DISABLE_STATIC`
2403 Used in order to disable static linking by default (in order to save
2404 space, since static libraries are often unused in embedded systems.)
2405 The default value is " --disable-static", however it can be set to ""
2406 in order to enable static linking if desired. Certain recipes do this
2407 individually, and also there is a
2408 ``meta/conf/distro/include/no-static-libs.inc`` include file that
2409 disables static linking for a number of recipes. Some software
2410 packages or build tools (such as CMake) have explicit support for
2411 enabling / disabling static linking, and in those cases
2412 :term:`DISABLE_STATIC` is not used.
2413
1798 :term:`DISTRO` 2414 :term:`DISTRO`
1799 The short name of the distribution. For information on the long name 2415 The short name of the distribution. For information on the long name
1800 of the distribution, see the :term:`DISTRO_NAME` 2416 of the distribution, see the :term:`DISTRO_NAME`
1801 variable. 2417 variable.
1802 2418
1803 The ``DISTRO`` variable corresponds to a distribution configuration 2419 The :term:`DISTRO` variable corresponds to a distribution configuration
1804 file whose root name is the same as the variable's argument and whose 2420 file whose root name is the same as the variable's argument and whose
1805 filename extension is ``.conf``. For example, the distribution 2421 filename extension is ``.conf``. For example, the distribution
1806 configuration file for the Poky distribution is named ``poky.conf`` 2422 configuration file for the Poky distribution is named ``poky.conf``
1807 and resides in the ``meta-poky/conf/distro`` directory of the 2423 and resides in the ``meta-poky/conf/distro`` directory of the
1808 :term:`Source Directory`. 2424 :term:`Source Directory`.
1809 2425
1810 Within that ``poky.conf`` file, the ``DISTRO`` variable is set as 2426 Within that ``poky.conf`` file, the :term:`DISTRO` variable is set as
1811 follows: 2427 follows::
1812 ::
1813 2428
1814 DISTRO = "poky" 2429 DISTRO = "poky"
1815 2430
1816 Distribution configuration files are located in a ``conf/distro`` 2431 Distribution configuration files are located in a ``conf/distro``
1817 directory within the :term:`Metadata` that contains the 2432 directory within the :term:`Metadata` that contains the
1818 distribution configuration. The value for ``DISTRO`` must not contain 2433 distribution configuration. The value for :term:`DISTRO` must not contain
1819 spaces, and is typically all lower-case. 2434 spaces, and is typically all lower-case.
1820 2435
1821 .. note:: 2436 .. note::
1822 2437
1823 If the ``DISTRO`` variable is blank, a set of default configurations 2438 If the :term:`DISTRO` variable is blank, a set of default configurations
1824 are used, which are specified within 2439 are used, which are specified within
1825 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. 2440 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
1826 2441
@@ -1829,7 +2444,7 @@ system and gives an overview of their function and contents.
1829 2444
1830 :term:`DISTRO_EXTRA_RDEPENDS` 2445 :term:`DISTRO_EXTRA_RDEPENDS`
1831 Specifies a list of distro-specific packages to add to all images. 2446 Specifies a list of distro-specific packages to add to all images.
1832 This variable takes affect through ``packagegroup-base`` so the 2447 This variable takes effect through ``packagegroup-base`` so the
1833 variable only really applies to the more full-featured images that 2448 variable only really applies to the more full-featured images that
1834 include ``packagegroup-base``. You can use this variable to keep 2449 include ``packagegroup-base``. You can use this variable to keep
1835 distro policy out of generic images. As with all other distro 2450 distro policy out of generic images. As with all other distro
@@ -1847,32 +2462,47 @@ system and gives an overview of their function and contents.
1847 configuration file. 2462 configuration file.
1848 2463
1849 In most cases, the presence or absence of a feature in 2464 In most cases, the presence or absence of a feature in
1850 ``DISTRO_FEATURES`` is translated to the appropriate option supplied 2465 :term:`DISTRO_FEATURES` is translated to the appropriate option supplied
1851 to the configure script during the 2466 to the configure script during the
1852 :ref:`ref-tasks-configure` task for recipes that 2467 :ref:`ref-tasks-configure` task for recipes that
1853 optionally support the feature. For example, specifying "x11" in 2468 optionally support the feature. For example, specifying "x11" in
1854 ``DISTRO_FEATURES``, causes every piece of software built for the 2469 :term:`DISTRO_FEATURES`, causes every piece of software built for the
1855 target that can optionally support X11 to have its X11 support 2470 target that can optionally support X11 to have its X11 support
1856 enabled. 2471 enabled.
1857 2472
2473 .. note::
2474
2475 Just enabling :term:`DISTRO_FEATURES` alone doesn't
2476 enable feature support for packages. Mechanisms such as making
2477 :term:`PACKAGECONFIG` track :term:`DISTRO_FEATURES` are used
2478 to enable/disable package features.
2479
1858 Two more examples are Bluetooth and NFS support. For a more complete 2480 Two more examples are Bluetooth and NFS support. For a more complete
1859 list of features that ships with the Yocto Project and that you can 2481 list of features that ships with the Yocto Project and that you can
1860 provide with this variable, see the ":ref:`ref-features-distro`" section. 2482 provide with this variable, see the ":ref:`ref-features-distro`" section.
1861 2483
1862 :term:`DISTRO_FEATURES_BACKFILL` 2484 :term:`DISTRO_FEATURES_BACKFILL`
1863 Features to be added to ``DISTRO_FEATURES`` if not also present in 2485 A space-separated list of features to be added to :term:`DISTRO_FEATURES`
1864 ``DISTRO_FEATURES_BACKFILL_CONSIDERED``. 2486 if not also present in :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`.
1865 2487
1866 This variable is set in the ``meta/conf/bitbake.conf`` file. It is 2488 This variable is set in the ``meta/conf/bitbake.conf`` file. It is
1867 not intended to be user-configurable. It is best to just reference 2489 not intended to be user-configurable. It is best to just reference
1868 the variable to see which distro features are being backfilled for 2490 the variable to see which distro features are being
1869 all distro configurations. See the ":ref:`ref-features-backfill`" section 2491 :ref:`backfilled <ref-features-backfill>` for all distro configurations.
1870 for more information.
1871 2492
1872 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` 2493 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`
1873 Features from ``DISTRO_FEATURES_BACKFILL`` that should not be 2494 A space-separated list of features from :term:`DISTRO_FEATURES_BACKFILL`
1874 backfilled (i.e. added to ``DISTRO_FEATURES``) during the build. See 2495 that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
1875 the ":ref:`ref-features-backfill`" section for more information. 2496 to :term:`DISTRO_FEATURES`) during the build.
2497
2498 This corresponds to an opt-out mechanism. When new default distro
2499 features are introduced, distribution maintainers can review (`consider`)
2500 them and decide to exclude them from the
2501 :ref:`backfilled <ref-features-backfill>` features. Therefore, the
2502 combination of :term:`DISTRO_FEATURES_BACKFILL` and
2503 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` makes it possible to
2504 add new default features without breaking existing distributions.
2505
1876 2506
1877 :term:`DISTRO_FEATURES_DEFAULT` 2507 :term:`DISTRO_FEATURES_DEFAULT`
1878 A convenience variable that gives you the default list of distro 2508 A convenience variable that gives you the default list of distro
@@ -1883,26 +2513,24 @@ system and gives an overview of their function and contents.
1883 able to reuse the default 2513 able to reuse the default
1884 :term:`DISTRO_FEATURES` options without the 2514 :term:`DISTRO_FEATURES` options without the
1885 need to write out the full set. Here is an example that uses 2515 need to write out the full set. Here is an example that uses
1886 ``DISTRO_FEATURES_DEFAULT`` from a custom distro configuration file: 2516 :term:`DISTRO_FEATURES_DEFAULT` from a custom distro configuration file::
1887 ::
1888 2517
1889 DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature" 2518 DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature"
1890 2519
1891 :term:`DISTRO_FEATURES_FILTER_NATIVE` 2520 :term:`DISTRO_FEATURES_FILTER_NATIVE`
1892 Specifies a list of features that if present in the target 2521 Specifies a list of features that if present in the target
1893 :term:`DISTRO_FEATURES` value should be 2522 :term:`DISTRO_FEATURES` value should be
1894 included in ``DISTRO_FEATURES`` when building native recipes. This 2523 included in :term:`DISTRO_FEATURES` when building native recipes. This
1895 variable is used in addition to the features filtered using the 2524 variable is used in addition to the features filtered using the
1896 :term:`DISTRO_FEATURES_NATIVE` 2525 :term:`DISTRO_FEATURES_NATIVE`
1897 variable. 2526 variable.
1898 2527
1899 :term:`DISTRO_FEATURES_FILTER_NATIVESDK` 2528 :term:`DISTRO_FEATURES_FILTER_NATIVESDK`
1900 Specifies a list of features that if present in the target 2529 Specifies a list of features that if present in the target
1901 :term:`DISTRO_FEATURES` value should be 2530 :term:`DISTRO_FEATURES` value should be included in
1902 included in ``DISTRO_FEATURES`` when building nativesdk recipes. This 2531 :term:`DISTRO_FEATURES` when building :ref:`ref-classes-nativesdk`
1903 variable is used in addition to the features filtered using the 2532 recipes. This variable is used in addition to the features filtered using
1904 :term:`DISTRO_FEATURES_NATIVESDK` 2533 the :term:`DISTRO_FEATURES_NATIVESDK` variable.
1905 variable.
1906 2534
1907 :term:`DISTRO_FEATURES_NATIVE` 2535 :term:`DISTRO_FEATURES_NATIVE`
1908 Specifies a list of features that should be included in 2536 Specifies a list of features that should be included in
@@ -1915,25 +2543,23 @@ system and gives an overview of their function and contents.
1915 :term:`DISTRO_FEATURES_NATIVESDK` 2543 :term:`DISTRO_FEATURES_NATIVESDK`
1916 Specifies a list of features that should be included in 2544 Specifies a list of features that should be included in
1917 :term:`DISTRO_FEATURES` when building 2545 :term:`DISTRO_FEATURES` when building
1918 nativesdk recipes. This variable is used in addition to the features 2546 :ref:`ref-classes-nativesdk` recipes. This variable is used
1919 filtered using the 2547 in addition to the features filtered using the
1920 :term:`DISTRO_FEATURES_FILTER_NATIVESDK` 2548 :term:`DISTRO_FEATURES_FILTER_NATIVESDK` variable.
1921 variable.
1922 2549
1923 :term:`DISTRO_NAME` 2550 :term:`DISTRO_NAME`
1924 The long name of the distribution. For information on the short name 2551 The long name of the distribution. For information on the short name
1925 of the distribution, see the :term:`DISTRO` variable. 2552 of the distribution, see the :term:`DISTRO` variable.
1926 2553
1927 The ``DISTRO_NAME`` variable corresponds to a distribution 2554 The :term:`DISTRO_NAME` variable corresponds to a distribution
1928 configuration file whose root name is the same as the variable's 2555 configuration file whose root name is the same as the variable's
1929 argument and whose filename extension is ``.conf``. For example, the 2556 argument and whose filename extension is ``.conf``. For example, the
1930 distribution configuration file for the Poky distribution is named 2557 distribution configuration file for the Poky distribution is named
1931 ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory 2558 ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory
1932 of the :term:`Source Directory`. 2559 of the :term:`Source Directory`.
1933 2560
1934 Within that ``poky.conf`` file, the ``DISTRO_NAME`` variable is set 2561 Within that ``poky.conf`` file, the :term:`DISTRO_NAME` variable is set
1935 as follows: 2562 as follows::
1936 ::
1937 2563
1938 DISTRO_NAME = "Poky (Yocto Project Reference Distro)" 2564 DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
1939 2565
@@ -1943,7 +2569,7 @@ system and gives an overview of their function and contents.
1943 2569
1944 .. note:: 2570 .. note::
1945 2571
1946 If the ``DISTRO_NAME`` variable is blank, a set of default 2572 If the :term:`DISTRO_NAME` variable is blank, a set of default
1947 configurations are used, which are specified within 2573 configurations are used, which are specified within
1948 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. 2574 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory.
1949 2575
@@ -1955,26 +2581,30 @@ system and gives an overview of their function and contents.
1955 distribution. By default, this list includes the value of 2581 distribution. By default, this list includes the value of
1956 :term:`DISTRO`. 2582 :term:`DISTRO`.
1957 2583
1958 You can extend ``DISTROOVERRIDES`` to add extra overrides that should 2584 You can extend :term:`DISTROOVERRIDES` to add extra overrides that should
1959 apply to the distribution. 2585 apply to the distribution.
1960 2586
1961 The underlying mechanism behind ``DISTROOVERRIDES`` is simply that it 2587 The underlying mechanism behind :term:`DISTROOVERRIDES` is simply that it
1962 is included in the default value of 2588 is included in the default value of
1963 :term:`OVERRIDES`. 2589 :term:`OVERRIDES`.
1964 2590
2591 Here is an example from :yocto_git:`meta-poky/conf/distro/poky-tiny.conf
2592 </poky/tree/meta-poky/conf/distro/poky-tiny.conf>`::
2593
2594 DISTROOVERRIDES = "poky:poky-tiny"
2595
1965 :term:`DL_DIR` 2596 :term:`DL_DIR`
1966 The central download directory used by the build process to store 2597 The central download directory used by the build process to store
1967 downloads. By default, ``DL_DIR`` gets files suitable for mirroring 2598 downloads. By default, :term:`DL_DIR` gets files suitable for mirroring
1968 for everything except Git repositories. If you want tarballs of Git 2599 for everything except Git repositories. If you want tarballs of Git
1969 repositories, use the 2600 repositories, use the
1970 :term:`BB_GENERATE_MIRROR_TARBALLS` 2601 :term:`BB_GENERATE_MIRROR_TARBALLS`
1971 variable. 2602 variable.
1972 2603
1973 You can set this directory by defining the ``DL_DIR`` variable in the 2604 You can set this directory by defining the :term:`DL_DIR` variable in the
1974 ``conf/local.conf`` file. This directory is self-maintaining and you 2605 ``conf/local.conf`` file. This directory is self-maintaining and you
1975 should not have to touch it. By default, the directory is 2606 should not have to touch it. By default, the directory is
1976 ``downloads`` in the :term:`Build Directory`. 2607 ``downloads`` in the :term:`Build Directory`::
1977 ::
1978 2608
1979 #DL_DIR ?= "${TOPDIR}/downloads" 2609 #DL_DIR ?= "${TOPDIR}/downloads"
1980 2610
@@ -1984,7 +2614,7 @@ system and gives an overview of their function and contents.
1984 During a first build, the system downloads many different source code 2614 During a first build, the system downloads many different source code
1985 tarballs from various upstream projects. Downloading can take a 2615 tarballs from various upstream projects. Downloading can take a
1986 while, particularly if your network connection is slow. Tarballs are 2616 while, particularly if your network connection is slow. Tarballs are
1987 all stored in the directory defined by ``DL_DIR`` and the build 2617 all stored in the directory defined by :term:`DL_DIR` and the build
1988 system looks there first to find source tarballs. 2618 system looks there first to find source tarballs.
1989 2619
1990 .. note:: 2620 .. note::
@@ -1995,30 +2625,62 @@ system and gives an overview of their function and contents.
1995 You can safely share this directory between multiple builds on the 2625 You can safely share this directory between multiple builds on the
1996 same development machine. For additional information on how the build 2626 same development machine. For additional information on how the build
1997 process gets source files when working behind a firewall or proxy 2627 process gets source files when working behind a firewall or proxy
1998 server, see this specific question in the ":doc:`faq`" 2628 server, see this specific question in the ":doc:`/ref-manual/faq`"
1999 chapter. You can also refer to the 2629 chapter. You can also refer to the
2000 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`" 2630 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
2001 Wiki page. 2631 Wiki page.
2002 2632
2003 :term:`DOC_COMPRESS` 2633 :term:`DOC_COMPRESS`
2004 When inheriting the :ref:`compress_doc <ref-classes-compress_doc>` 2634 When inheriting the :ref:`ref-classes-compress_doc`
2005 class, this variable sets the compression policy used when the 2635 class, this variable sets the compression policy used when the
2006 OpenEmbedded build system compresses man pages and info pages. By 2636 OpenEmbedded build system compresses manual and info pages. By
2007 default, the compression method used is gz (gzip). Other policies 2637 default, the compression method used is gz (gzip). Other policies
2008 available are xz and bz2. 2638 available are xz and bz2.
2009 2639
2010 For information on policies and on how to use this variable, see the 2640 For information on policies and on how to use this variable, see the
2011 comments in the ``meta/classes/compress_doc.bbclass`` file. 2641 comments in the ``meta/classes-recipe/compress_doc.bbclass`` file.
2642
2643 :term:`DT_FILES`
2644 Space-separated list of device tree source files to compile using
2645 a recipe that inherits the :ref:`ref-classes-devicetree` class. These
2646 are relative to the :term:`DT_FILES_PATH`.
2647
2648 For convenience, both ``.dts`` and ``.dtb`` extensions can be used.
2649
2650 Use an empty string (default) to build all device tree sources within
2651 the :term:`DT_FILES_PATH` directory.
2652
2653 :term:`DT_FILES_PATH`
2654 When compiling out-of-tree device tree sources using a recipe that
2655 inherits the :ref:`ref-classes-devicetree` class, this variable specifies
2656 the path to the directory containing dts files to build.
2657
2658 Defaults to the :term:`S` directory.
2659
2660 :term:`DT_PADDING_SIZE`
2661 When inheriting the :ref:`ref-classes-devicetree` class, this variable
2662 specifies the size of padding appended to the device tree blob, used as
2663 extra space typically for additional properties during boot.
2664
2665 :term:`EFI_ARCH`
2666 The CPU architecture name within EFI standard. Set in
2667 :oe_git:`meta/conf/image-uefi.conf
2668 <openembedded-core/tree/meta/conf/image-uefi.conf>`.
2012 2669
2013 :term:`EFI_PROVIDER` 2670 :term:`EFI_PROVIDER`
2014 When building bootable images (i.e. where ``hddimg``, ``iso``, or 2671 When building bootable images (i.e. where ``hddimg``, ``iso``, or
2015 ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the 2672 ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the
2016 ``EFI_PROVIDER`` variable specifies the EFI bootloader to use. The 2673 :term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The
2017 default is "grub-efi", but "systemd-boot" can be used instead. 2674 default is "grub-efi", but "systemd-boot" can be used instead.
2018 2675
2019 See the :ref:`systemd-boot <ref-classes-systemd-boot>` and 2676 See the :ref:`ref-classes-systemd-boot` and :ref:`ref-classes-image-live`
2020 :ref:`image-live <ref-classes-image-live>` classes for more 2677 classes for more information.
2021 information. 2678
2679 :term:`EFI_UKI_DIR`
2680 The primary place for the UKI image inside the EFI System Partition.
2681
2682 :term:`EFI_UKI_PATH`
2683 The path for the UKI image inside the root filesystem.
2022 2684
2023 :term:`ENABLE_BINARY_LOCALE_GENERATION` 2685 :term:`ENABLE_BINARY_LOCALE_GENERATION`
2024 Variable that controls which locales for ``glibc`` are generated 2686 Variable that controls which locales for ``glibc`` are generated
@@ -2026,18 +2688,16 @@ system and gives an overview of their function and contents.
2026 less). 2688 less).
2027 2689
2028 :term:`ERR_REPORT_DIR` 2690 :term:`ERR_REPORT_DIR`
2029 When used with the :ref:`report-error <ref-classes-report-error>` 2691 When used with the :ref:`ref-classes-report-error` class, specifies the
2030 class, specifies the path used for storing the debug files created by 2692 path used for storing the debug files created by the :ref:`error reporting
2031 the :ref:`error reporting 2693 tool <dev-manual/error-reporting-tool:using the error reporting tool>`,
2032 tool <dev-manual/common-tasks:using the error reporting tool>`, which 2694 which allows you to submit build errors you encounter to a central
2033 allows you to submit build errors you encounter to a central
2034 database. By default, the value of this variable is 2695 database. By default, the value of this variable is
2035 ``${``\ :term:`LOG_DIR`\ ``}/error-report``. 2696 ``${``\ :term:`LOG_DIR`\ ``}/error-report``.
2036 2697
2037 You can set ``ERR_REPORT_DIR`` to the path you want the error 2698 You can set :term:`ERR_REPORT_DIR` to the path you want the error
2038 reporting tool to store the debug files as follows in your 2699 reporting tool to store the debug files as follows in your
2039 ``local.conf`` file: 2700 ``local.conf`` file::
2040 ::
2041 2701
2042 ERR_REPORT_DIR = "path" 2702 ERR_REPORT_DIR = "path"
2043 2703
@@ -2046,7 +2706,69 @@ system and gives an overview of their function and contents.
2046 errors by the OpenEmbedded build system. You set this variable in 2706 errors by the OpenEmbedded build system. You set this variable in
2047 your distribution configuration file. For a list of the checks you 2707 your distribution configuration file. For a list of the checks you
2048 can control with this variable, see the 2708 can control with this variable, see the
2049 ":ref:`insane.bbclass <ref-classes-insane>`" section. 2709 ":ref:`ref-classes-insane`" section.
2710
2711 :term:`ESDK_CLASS_INHERIT_DISABLE`
2712 A list of classes to remove from the :term:`INHERIT`
2713 value globally within the extensible SDK configuration. The
2714 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
2715 default value::
2716
2717 ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory"
2718
2719 Some classes are not generally applicable within the extensible SDK
2720 context. You can use this variable to disable those classes.
2721
2722 For additional information on how to customize the extensible SDK's
2723 configuration, see the
2724 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2725 section in the Yocto Project Application Development and the
2726 Extensible Software Development Kit (eSDK) manual.
2727
2728 :term:`ESDK_LOCALCONF_ALLOW`
2729 A list of variables allowed through from the OpenEmbedded build
2730 system configuration into the extensible SDK configuration. By
2731 default, the list of variables is empty and is set in the
2732 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class.
2733
2734 This list overrides the variables specified using the
2735 :term:`ESDK_LOCALCONF_REMOVE` variable as well as
2736 other variables automatically added due to the "/" character
2737 being found at the start of the
2738 value, which is usually indicative of being a path and thus might not
2739 be valid on the system where the SDK is installed.
2740
2741 For additional information on how to customize the extensible SDK's
2742 configuration, see the
2743 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2744 section in the Yocto Project Application Development and the
2745 Extensible Software Development Kit (eSDK) manual.
2746
2747 :term:`ESDK_LOCALCONF_REMOVE`
2748 A list of variables not allowed through from the OpenEmbedded build
2749 system configuration into the extensible SDK configuration. Usually,
2750 these are variables that are specific to the machine on which the
2751 build system is running and thus would be potentially problematic
2752 within the extensible SDK.
2753
2754 By default, :term:`ESDK_LOCALCONF_REMOVE` is set in the
2755 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and
2756 excludes the following variables:
2757
2758 - :term:`CONF_VERSION`
2759 - :term:`BB_NUMBER_THREADS`
2760 - :term:`BB_NUMBER_PARSE_THREADS`
2761 - :term:`PARALLEL_MAKE`
2762 - :term:`PRSERV_HOST`
2763 - :term:`SSTATE_MIRRORS` :term:`DL_DIR`
2764 - :term:`SSTATE_DIR` :term:`TMPDIR`
2765 - :term:`BB_SERVER_TIMEOUT`
2766
2767 For additional information on how to customize the extensible SDK's
2768 configuration, see the
2769 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
2770 section in the Yocto Project Application Development and the
2771 Extensible Software Development Kit (eSDK) manual.
2050 2772
2051 :term:`EXCLUDE_FROM_SHLIBS` 2773 :term:`EXCLUDE_FROM_SHLIBS`
2052 Triggers the OpenEmbedded build system's shared libraries resolver to 2774 Triggers the OpenEmbedded build system's shared libraries resolver to
@@ -2060,13 +2782,12 @@ system and gives an overview of their function and contents.
2060 libraries resolver might implicitly define some dependencies between 2782 libraries resolver might implicitly define some dependencies between
2061 packages. 2783 packages.
2062 2784
2063 The ``EXCLUDE_FROM_SHLIBS`` variable is similar to the 2785 The :term:`EXCLUDE_FROM_SHLIBS` variable is similar to the
2064 :term:`PRIVATE_LIBS` variable, which excludes a 2786 :term:`PRIVATE_LIBS` variable, which excludes a
2065 package's particular libraries only and not the whole package. 2787 package's particular libraries only and not the whole package.
2066 2788
2067 Use the ``EXCLUDE_FROM_SHLIBS`` variable by setting it to "1" for a 2789 Use the :term:`EXCLUDE_FROM_SHLIBS` variable by setting it to "1" for a
2068 particular package: 2790 particular package::
2069 ::
2070 2791
2071 EXCLUDE_FROM_SHLIBS = "1" 2792 EXCLUDE_FROM_SHLIBS = "1"
2072 2793
@@ -2081,18 +2802,18 @@ system and gives an overview of their function and contents.
2081 2802
2082 .. note:: 2803 .. note::
2083 2804
2084 Recipes added to ``EXCLUDE_FROM_WORLD`` may still be built during a 2805 Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a
2085 world build in order to satisfy dependencies of other recipes. Adding 2806 world build in order to satisfy dependencies of other recipes. Adding
2086 a recipe to ``EXCLUDE_FROM_WORLD`` only ensures that the recipe is not 2807 a recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not
2087 explicitly added to the list of build targets in a world build. 2808 explicitly added to the list of build targets in a world build.
2088 2809
2089 :term:`EXTENDPE` 2810 :term:`EXTENDPE`
2090 Used with file and pathnames to create a prefix for a recipe's 2811 Used with file and pathnames to create a prefix for a recipe's
2091 version based on the recipe's :term:`PE` value. If ``PE`` 2812 version based on the recipe's :term:`PE` value. If :term:`PE`
2092 is set and greater than zero for a recipe, ``EXTENDPE`` becomes that 2813 is set and greater than zero for a recipe, :term:`EXTENDPE` becomes that
2093 value (e.g if ``PE`` is equal to "1" then ``EXTENDPE`` becomes "1"). 2814 value (e.g if :term:`PE` is equal to "1" then :term:`EXTENDPE` becomes "1").
2094 If a recipe's ``PE`` is not set (the default) or is equal to zero, 2815 If a recipe's :term:`PE` is not set (the default) or is equal to zero,
2095 ``EXTENDPE`` becomes "". 2816 :term:`EXTENDPE` becomes "".
2096 2817
2097 See the :term:`STAMP` variable for an example. 2818 See the :term:`STAMP` variable for an example.
2098 2819
@@ -2100,55 +2821,64 @@ system and gives an overview of their function and contents.
2100 The full package version specification as it appears on the final 2821 The full package version specification as it appears on the final
2101 packages produced by a recipe. The variable's value is normally used 2822 packages produced by a recipe. The variable's value is normally used
2102 to fix a runtime dependency to the exact same version of another 2823 to fix a runtime dependency to the exact same version of another
2103 package in the same recipe: 2824 package in the same recipe::
2104 ::
2105 2825
2106 RDEPENDS_${PN}-additional-module = "${PN} (= ${EXTENDPKGV})" 2826 RDEPENDS:${PN}-additional-module = "${PN} (= ${EXTENDPKGV})"
2107 2827
2108 The dependency relationships are intended to force the package 2828 The dependency relationships are intended to force the package
2109 manager to upgrade these types of packages in lock-step. 2829 manager to upgrade these types of packages in lock-step.
2110 2830
2831 :term:`EXTERNAL_KERNEL_DEVICETREE`
2832 When inheriting :ref:`ref-classes-kernel-fit-image` and a
2833 :term:`PREFERRED_PROVIDER` for ``virtual/dtb`` set to ``devicetree``, the
2834 variable :term:`EXTERNAL_KERNEL_DEVICETREE` can be used to specify a
2835 directory containing one or more compiled device tree or device tree
2836 overlays to use.
2837
2111 :term:`EXTERNAL_KERNEL_TOOLS` 2838 :term:`EXTERNAL_KERNEL_TOOLS`
2112 When set, the ``EXTERNAL_KERNEL_TOOLS`` variable indicates that these 2839 When set, the :term:`EXTERNAL_KERNEL_TOOLS` variable indicates that these
2113 tools are not in the source tree. 2840 tools are not in the source tree.
2114 2841
2115 When kernel tools are available in the tree, they are preferred over 2842 When kernel tools are available in the tree, they are preferred over
2116 any externally installed tools. Setting the ``EXTERNAL_KERNEL_TOOLS`` 2843 any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS`
2117 variable tells the OpenEmbedded build system to prefer the installed 2844 variable tells the OpenEmbedded build system to prefer the installed
2118 external tools. See the 2845 external tools. See the :ref:`ref-classes-kernel-yocto` class in
2119 :ref:`kernel-yocto <ref-classes-kernel-yocto>` class in 2846 ``meta/classes-recipe`` to see how the variable is used.
2120 ``meta/classes`` to see how the variable is used. 2847
2848 :term:`EXTERNAL_TOOLCHAIN`
2849 When you intend to use an
2850 :ref:`external toolchain <dev-manual/external-toolchain:optionally using an external toolchain>`,
2851 this variable allows to specify the directory where this toolchain was
2852 installed.
2121 2853
2122 :term:`EXTERNALSRC` 2854 :term:`EXTERNALSRC`
2123 When inheriting the :ref:`externalsrc <ref-classes-externalsrc>` 2855 When inheriting the :ref:`ref-classes-externalsrc`
2124 class, this variable points to the source tree, which is outside of 2856 class, this variable points to the source tree, which is outside of
2125 the OpenEmbedded build system. When set, this variable sets the 2857 the OpenEmbedded build system. When set, this variable sets the
2126 :term:`S` variable, which is what the OpenEmbedded build 2858 :term:`S` variable, which is what the OpenEmbedded build
2127 system uses to locate unpacked recipe source code. 2859 system uses to locate unpacked recipe source code.
2128 2860
2129 For more information on ``externalsrc.bbclass``, see the 2861 See the ":ref:`ref-classes-externalsrc`" section for details. You
2130 ":ref:`externalsrc.bbclass <ref-classes-externalsrc>`" section. You
2131 can also find information on how to use this variable in the 2862 can also find information on how to use this variable in the
2132 ":ref:`dev-manual/common-tasks:building software from an external source`" 2863 ":ref:`dev-manual/building:building software from an external source`"
2133 section in the Yocto Project Development Tasks Manual. 2864 section in the Yocto Project Development Tasks Manual.
2134 2865
2135 :term:`EXTERNALSRC_BUILD` 2866 :term:`EXTERNALSRC_BUILD`
2136 When inheriting the :ref:`externalsrc <ref-classes-externalsrc>` 2867 When inheriting the :ref:`ref-classes-externalsrc`
2137 class, this variable points to the directory in which the recipe's 2868 class, this variable points to the directory in which the recipe's
2138 source code is built, which is outside of the OpenEmbedded build 2869 source code is built, which is outside of the OpenEmbedded build
2139 system. When set, this variable sets the :term:`B` variable, 2870 system. When set, this variable sets the :term:`B` variable,
2140 which is what the OpenEmbedded build system uses to locate the Build 2871 which is what the OpenEmbedded build system uses to locate the
2141 Directory. 2872 :term:`Build Directory`.
2142 2873
2143 For more information on ``externalsrc.bbclass``, see the 2874 See the ":ref:`ref-classes-externalsrc`" section for details. You
2144 ":ref:`externalsrc.bbclass <ref-classes-externalsrc>`" section. You
2145 can also find information on how to use this variable in the 2875 can also find information on how to use this variable in the
2146 ":ref:`dev-manual/common-tasks:building software from an external source`" 2876 ":ref:`dev-manual/building:building software from an external source`"
2147 section in the Yocto Project Development Tasks Manual. 2877 section in the Yocto Project Development Tasks Manual.
2148 2878
2149 :term:`EXTRA_AUTORECONF` 2879 :term:`EXTRA_AUTORECONF`
2150 For recipes inheriting the :ref:`autotools <ref-classes-autotools>` 2880 For recipes inheriting the :ref:`ref-classes-autotools`
2151 class, you can use ``EXTRA_AUTORECONF`` to specify extra options to 2881 class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to
2152 pass to the ``autoreconf`` command that is executed during the 2882 pass to the ``autoreconf`` command that is executed during the
2153 :ref:`ref-tasks-configure` task. 2883 :ref:`ref-tasks-configure` task.
2154 2884
@@ -2159,9 +2889,8 @@ system and gives an overview of their function and contents.
2159 more than one feature, separate them with a space. 2889 more than one feature, separate them with a space.
2160 2890
2161 Typically, you configure this variable in your ``local.conf`` file, 2891 Typically, you configure this variable in your ``local.conf`` file,
2162 which is found in the :term:`Build Directory`. 2892 which is found in the :term:`Build Directory`. Although you can use this
2163 Although you can use this variable from within a recipe, best 2893 variable from within a recipe, best practices dictate that you do not.
2164 practices dictate that you do not.
2165 2894
2166 .. note:: 2895 .. note::
2167 2896
@@ -2170,70 +2899,62 @@ system and gives an overview of their function and contents.
2170 2899
2171 Here are some examples of features you can add: 2900 Here are some examples of features you can add:
2172 2901
2173 - "dbg-pkgs" - Adds -dbg packages for all installed packages including 2902 - "dbg-pkgs" --- adds -dbg packages for all installed packages including
2174 symbol information for debugging and profiling. 2903 symbol information for debugging and profiling.
2175 2904
2176 - "debug-tweaks" - Makes an image suitable for debugging. For example, allows root logins without passwords and 2905 - "empty-root-password" --- This feature can be used if you want to
2177 enables post-installation logging. See the 'allow-empty-password' and 2906 allow root login with an empty password.
2178 'post-install-logging' features in the ":ref:`ref-features-image`" 2907 - "allow-empty-password" --- Allows Dropbear and OpenSSH to accept
2179 section for more information. 2908 logins from accounts having an empty password string.
2180 - "dev-pkgs" - Adds -dev packages for all installed packages. This is 2909 - "allow-root-login" --- Allows Dropbear and OpenSSH to accept root logins.
2910 - "post-install-logging" --- Enables logging postinstall script runs to
2911 the ``/var/log/postinstall.log`` file on first boot of the image on
2912 the target system.
2913 - "dev-pkgs" --- adds -dev packages for all installed packages. This is
2181 useful if you want to develop against the libraries in the image. 2914 useful if you want to develop against the libraries in the image.
2182 - "read-only-rootfs" - Creates an image whose root filesystem is 2915 - "read-only-rootfs" --- creates an image whose root filesystem is
2183 read-only. See the 2916 read-only. See the
2184 ":ref:`dev-manual/common-tasks:creating a read-only root filesystem`" 2917 ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`"
2185 section in the Yocto Project Development Tasks Manual for more 2918 section in the Yocto Project Development Tasks Manual for more
2186 information 2919 information
2187 - "tools-debug" - Adds debugging tools such as gdb and strace. 2920 - "tools-debug" --- adds debugging tools such as gdb and strace.
2188 - "tools-sdk" - Adds development tools such as gcc, make, 2921 - "tools-sdk" --- adds development tools such as gcc, make,
2189 pkgconfig and so forth. 2922 pkgconfig and so forth.
2190 - "tools-testapps" - Adds useful testing tools 2923 - "tools-testapps" --- adds useful testing tools
2191 such as ts_print, aplay, arecord and so forth. 2924 such as ts_print, aplay, arecord and so forth.
2192 2925
2193 For a complete list of image features that ships with the Yocto 2926 For a complete list of image features that ships with the Yocto
2194 Project, see the ":ref:`ref-features-image`" section. 2927 Project, see the ":ref:`ref-features-image`" section.
2195 2928
2196 For an example that shows how to customize your image by using this 2929 For an example that shows how to customize your image by using this
2197 variable, see the ":ref:`dev-manual/common-tasks:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``" 2930 variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
2198 section in the Yocto Project Development Tasks Manual. 2931 section in the Yocto Project Development Tasks Manual.
2199 2932
2200 :term:`EXTRA_IMAGECMD` 2933 :term:`EXTRA_IMAGECMD`
2201 Specifies additional options for the image creation command that has 2934 Specifies additional options for the image creation command that has
2202 been specified in :term:`IMAGE_CMD`. When setting 2935 been specified in :term:`IMAGE_CMD`. When setting
2203 this variable, use an override for the associated image type. Here is 2936 this variable, use an override for the associated image type. Here is
2204 an example: 2937 an example::
2205 ::
2206 2938
2207 EXTRA_IMAGECMD_ext3 ?= "-i 4096" 2939 EXTRA_IMAGECMD:ext3 ?= "-i 4096"
2208 2940
2209 :term:`EXTRA_IMAGEDEPENDS` 2941 :term:`EXTRA_IMAGEDEPENDS`
2210 A list of recipes to build that do not provide packages for 2942 A list of recipes to build that do not provide packages for
2211 installing into the root filesystem. 2943 installing into the root filesystem.
2212 2944
2213 Sometimes a recipe is required to build the final image but is not 2945 Sometimes a recipe is required to build the final image but is not
2214 needed in the root filesystem. You can use the ``EXTRA_IMAGEDEPENDS`` 2946 needed in the root filesystem. You can use the :term:`EXTRA_IMAGEDEPENDS`
2215 variable to list these recipes and thus specify the dependencies. A 2947 variable to list these recipes and thus specify the dependencies. A
2216 typical example is a required bootloader in a machine configuration. 2948 typical example is a required bootloader in a machine configuration.
2217 2949
2218 .. note:: 2950 .. note::
2219 2951
2220 To add packages to the root filesystem, see the various 2952 To add packages to the root filesystem, see the various
2221 \*:term:`RDEPENDS` and \*:term:`RRECOMMENDS` variables. 2953 :term:`RDEPENDS` and :term:`RRECOMMENDS` variables.
2222
2223 :term:`EXTRANATIVEPATH`
2224 A list of subdirectories of
2225 ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}``
2226 added to the beginning of the environment variable ``PATH``. As an
2227 example, the following prepends
2228 "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to
2229 ``PATH``:
2230 ::
2231
2232 EXTRANATIVEPATH = "foo bar"
2233 2954
2234 :term:`EXTRA_OECMAKE` 2955 :term:`EXTRA_OECMAKE`
2235 Additional `CMake <https://cmake.org/overview/>`__ options. See the 2956 Additional `CMake <https://cmake.org/overview/>`__ options. See the
2236 :ref:`cmake <ref-classes-cmake>` class for additional information. 2957 :ref:`ref-classes-cmake` class for additional information.
2237 2958
2238 :term:`EXTRA_OECONF` 2959 :term:`EXTRA_OECONF`
2239 Additional ``configure`` script options. See 2960 Additional ``configure`` script options. See
@@ -2243,30 +2964,44 @@ system and gives an overview of their function and contents.
2243 :term:`EXTRA_OEMAKE` 2964 :term:`EXTRA_OEMAKE`
2244 Additional GNU ``make`` options. 2965 Additional GNU ``make`` options.
2245 2966
2246 Because the ``EXTRA_OEMAKE`` defaults to "", you need to set the 2967 Because the :term:`EXTRA_OEMAKE` defaults to "", you need to set the
2247 variable to specify any required GNU options. 2968 variable to specify any required GNU options.
2248 2969
2249 :term:`PARALLEL_MAKE` and 2970 :term:`PARALLEL_MAKE` and
2250 :term:`PARALLEL_MAKEINST` also make use of 2971 :term:`PARALLEL_MAKEINST` also make use of
2251 ``EXTRA_OEMAKE`` to pass the required flags. 2972 :term:`EXTRA_OEMAKE` to pass the required flags.
2973
2974 :term:`EXTRA_OEMESON`
2975 Additional `Meson <https://mesonbuild.com/>`__ options. See the
2976 :ref:`ref-classes-meson` class for additional information.
2977
2978 In addition to standard Meson options, such options correspond to
2979 `Meson build options <https://mesonbuild.com/Build-options.html>`__
2980 defined in the ``meson_options.txt`` file in the sources to build.
2981 Here is an example::
2982
2983 EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled"
2984
2985 Note that any custom value for the Meson ``--buildtype`` option
2986 should be set through the :term:`MESON_BUILDTYPE` variable.
2252 2987
2253 :term:`EXTRA_OESCONS` 2988 :term:`EXTRA_OESCONS`
2254 When inheriting the :ref:`scons <ref-classes-scons>` class, this 2989 When inheriting the :ref:`ref-classes-scons` class, this
2255 variable specifies additional configuration options you want to pass 2990 variable specifies additional configuration options you want to pass
2256 to the ``scons`` command line. 2991 to the ``scons`` command line.
2257 2992
2258 :term:`EXTRA_USERS_PARAMS` 2993 :term:`EXTRA_USERS_PARAMS`
2259 When inheriting the :ref:`extrausers <ref-classes-extrausers>` 2994 When inheriting the :ref:`ref-classes-extrausers`
2260 class, this variable provides image level user and group operations. 2995 class, this variable provides image level user and group operations.
2261 This is a more global method of providing user and group 2996 This is a more global method of providing user and group
2262 configuration as compared to using the 2997 configuration as compared to using the
2263 :ref:`useradd <ref-classes-useradd>` class, which ties user and 2998 :ref:`ref-classes-useradd` class, which ties user and
2264 group configurations to a specific recipe. 2999 group configurations to a specific recipe.
2265 3000
2266 The set list of commands you can configure using the 3001 The set list of commands you can configure using the
2267 ``EXTRA_USERS_PARAMS`` is shown in the ``extrausers`` class. These 3002 :term:`EXTRA_USERS_PARAMS` is shown in the
2268 commands map to the normal Unix commands of the same names: 3003 :ref:`ref-classes-extrausers` class. These commands map to the normal
2269 :: 3004 Unix commands of the same names::
2270 3005
2271 # EXTRA_USERS_PARAMS = "\ 3006 # EXTRA_USERS_PARAMS = "\
2272 # useradd -p '' tester; \ 3007 # useradd -p '' tester; \
@@ -2277,23 +3012,95 @@ system and gives an overview of their function and contents.
2277 # usermod -s /bin/sh tester; \ 3012 # usermod -s /bin/sh tester; \
2278 # " 3013 # "
2279 3014
3015 Hardcoded passwords are supported via the ``-p`` parameters for
3016 ``useradd`` or ``usermod``, but only hashed.
3017
3018 Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns
3019 passwords. First on host, create the (escaped) password hash::
3020
3021 printf "%q" $(mkpasswd -m sha256crypt tester01)
3022
3023 The resulting hash is set to a variable and used in ``useradd`` command parameters::
3024
3025 inherit extrausers
3026 PASSWD = "\$X\$ABC123\$A-Long-Hash"
3027 EXTRA_USERS_PARAMS = "\
3028 useradd -p '${PASSWD}' tester-jim; \
3029 useradd -p '${PASSWD}' tester-sue; \
3030 "
3031
3032 Finally, here is an example that sets the root password::
3033
3034 inherit extrausers
3035 EXTRA_USERS_PARAMS = "\
3036 usermod -p '${PASSWD}' root; \
3037 "
3038
3039 .. note::
3040
3041 From a security perspective, hardcoding a default password is not
3042 generally a good idea or even legal in some jurisdictions. It is
3043 recommended that you do not do this if you are building a production
3044 image.
3045
3046 Additionally there is a special ``passwd-expire`` command that will
3047 cause the password for a user to be expired and thus force changing it
3048 on first login, for example::
3049
3050 EXTRA_USERS_PARAMS += " useradd myuser; passwd-expire myuser;"
3051
3052 .. note::
3053
3054 At present, ``passwd-expire`` may only work for remote logins when
3055 using OpenSSH and not dropbear as an SSH server.
3056
3057 :term:`EXTRANATIVEPATH`
3058 A list of subdirectories of
3059 ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}``
3060 added to the beginning of the environment variable ``PATH``. As an
3061 example, the following prepends
3062 "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to
3063 ``PATH``::
3064
3065 EXTRANATIVEPATH = "foo bar"
3066
3067 :term:`FAKEROOT`
3068 See :term:`bitbake:FAKEROOT` in the BitBake manual.
3069
3070 :term:`FAKEROOTBASEENV`
3071 See :term:`bitbake:FAKEROOTBASEENV` in the BitBake manual.
3072
3073 :term:`FAKEROOTCMD`
3074 See :term:`bitbake:FAKEROOTCMD` in the BitBake manual.
3075
3076 :term:`FAKEROOTDIRS`
3077 See :term:`bitbake:FAKEROOTDIRS` in the BitBake manual.
3078
3079 :term:`FAKEROOTENV`
3080 See :term:`bitbake:FAKEROOTENV` in the BitBake manual.
3081
3082 :term:`FAKEROOTNOENV`
3083 See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual.
3084
3085 :term:`FC`
3086 The minimal command and arguments used to run the Fortran compiler.
3087
2280 :term:`FEATURE_PACKAGES` 3088 :term:`FEATURE_PACKAGES`
2281 Defines one or more packages to include in an image when a specific 3089 Defines one or more packages to include in an image when a specific
2282 item is included in :term:`IMAGE_FEATURES`. 3090 item is included in :term:`IMAGE_FEATURES`.
2283 When setting the value, ``FEATURE_PACKAGES`` should have the name of 3091 When setting the value, :term:`FEATURE_PACKAGES` should have the name of
2284 the feature item as an override. Here is an example: 3092 the feature item as an override. Here is an example::
2285 ::
2286 3093
2287 FEATURE_PACKAGES_widget = "package1 package2" 3094 FEATURE_PACKAGES_widget = "package1 package2"
2288 3095
2289 In this example, if "widget" were added to ``IMAGE_FEATURES``, 3096 In this example, if "widget" were added to :term:`IMAGE_FEATURES`,
2290 package1 and package2 would be included in the image. 3097 package1 and package2 would be included in the image.
2291 3098
2292 .. note:: 3099 .. note::
2293 3100
2294 Packages installed by features defined through ``FEATURE_PACKAGES`` 3101 Packages installed by features defined through :term:`FEATURE_PACKAGES`
2295 are often package groups. While similarly named, you should not 3102 are often package groups. While similarly named, you should not
2296 confuse the ``FEATURE_PACKAGES`` variable with package groups, which 3103 confuse the :term:`FEATURE_PACKAGES` variable with package groups, which
2297 are discussed elsewhere in the documentation. 3104 are discussed elsewhere in the documentation.
2298 3105
2299 :term:`FEED_DEPLOYDIR_BASE_URI` 3106 :term:`FEED_DEPLOYDIR_BASE_URI`
@@ -2302,8 +3109,7 @@ system and gives an overview of their function and contents.
2302 OPKG to support runtime package management of IPK packages. You set 3109 OPKG to support runtime package management of IPK packages. You set
2303 this variable in your ``local.conf`` file. 3110 this variable in your ``local.conf`` file.
2304 3111
2305 Consider the following example: 3112 Consider the following example::
2306 ::
2307 3113
2308 FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir" 3114 FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir"
2309 3115
@@ -2314,37 +3120,42 @@ system and gives an overview of their function and contents.
2314 a set of configuration files for you in your target that work with 3120 a set of configuration files for you in your target that work with
2315 the feed. 3121 the feed.
2316 3122
3123 :term:`FETCHCMD`
3124 See :term:`bitbake:FETCHCMD` in the BitBake manual.
3125
3126 :term:`FILE`
3127 See :term:`bitbake:FILE` in the BitBake manual.
3128
2317 :term:`FILES` 3129 :term:`FILES`
2318 The list of files and directories that are placed in a package. The 3130 The list of files and directories that are placed in a package. The
2319 :term:`PACKAGES` variable lists the packages 3131 :term:`PACKAGES` variable lists the packages
2320 generated by a recipe. 3132 generated by a recipe.
2321 3133
2322 To use the ``FILES`` variable, provide a package name override that 3134 To use the :term:`FILES` variable, provide a package name override that
2323 identifies the resulting package. Then, provide a space-separated 3135 identifies the resulting package. Then, provide a space-separated
2324 list of files or paths that identify the files you want included as 3136 list of files or paths that identify the files you want included as
2325 part of the resulting package. Here is an example: 3137 part of the resulting package. Here is an example::
2326 ::
2327 3138
2328 FILES_${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile" 3139 FILES:${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
2329 3140
2330 .. note:: 3141 .. note::
2331 3142
2332 - When specifying files or paths, you can pattern match using 3143 - When specifying files or paths, you can pattern match using
2333 Python's 3144 Python's
2334 `glob <https://docs.python.org/3/library/glob.html>`_ 3145 `glob <https://docs.python.org/3/library/glob.html>`__
2335 syntax. For details on the syntax, see the documentation by 3146 syntax. For details on the syntax, see the documentation by
2336 following the previous link. 3147 following the previous link.
2337 3148
2338 - When specifying paths as part of the ``FILES`` variable, it is 3149 - When specifying paths as part of the :term:`FILES` variable, it is
2339 good practice to use appropriate path variables. For example, 3150 good practice to use appropriate path variables. For example,
2340 use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}`` 3151 use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}``
2341 rather than ``/usr/bin``. You can find a list of these 3152 rather than ``/usr/bin``. You can find a list of these
2342 variables at the top of the ``meta/conf/bitbake.conf`` file in 3153 variables at the top of the ``meta/conf/bitbake.conf`` file in
2343 the :term:`Source Directory`. You will also 3154 the :term:`Source Directory`. You will also
2344 find the default values of the various ``FILES_*`` variables in 3155 find the default values of the various ``FILES:*`` variables in
2345 this file. 3156 this file.
2346 3157
2347 If some of the files you provide with the ``FILES`` variable are 3158 If some of the files you provide with the :term:`FILES` variable are
2348 editable and you know they should not be overwritten during the 3159 editable and you know they should not be overwritten during the
2349 package update process by the Package Management System (PMS), you 3160 package update process by the Package Management System (PMS), you
2350 can identify these files so that the PMS will not overwrite them. See 3161 can identify these files so that the PMS will not overwrite them. See
@@ -2354,29 +3165,26 @@ system and gives an overview of their function and contents.
2354 :term:`FILES_SOLIBSDEV` 3165 :term:`FILES_SOLIBSDEV`
2355 Defines the file specification to match 3166 Defines the file specification to match
2356 :term:`SOLIBSDEV`. In other words, 3167 :term:`SOLIBSDEV`. In other words,
2357 ``FILES_SOLIBSDEV`` defines the full path name of the development 3168 :term:`FILES_SOLIBSDEV` defines the full path name of the development
2358 symbolic link (symlink) for shared libraries on the target platform. 3169 symbolic link (symlink) for shared libraries on the target platform.
2359 3170
2360 The following statement from the ``bitbake.conf`` shows how it is 3171 The following statement from the ``bitbake.conf`` shows how it is
2361 set: 3172 set::
2362 ::
2363 3173
2364 FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}" 3174 FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
2365 3175
2366 :term:`FILESEXTRAPATHS` 3176 :term:`FILESEXTRAPATHS`
2367 Extends the search path the OpenEmbedded build system uses when 3177 A colon-separated list to extend the search path the OpenEmbedded build
2368 looking for files and patches as it processes recipes and append 3178 system uses when looking for files and patches as it processes recipes
2369 files. The default directories BitBake uses when it processes recipes 3179 and append files. The default directories BitBake uses when it processes
2370 are initially defined by the :term:`FILESPATH` 3180 recipes are initially defined by the :term:`FILESPATH` variable. You can
2371 variable. You can extend ``FILESPATH`` variable by using 3181 extend :term:`FILESPATH` variable by using :term:`FILESEXTRAPATHS`.
2372 ``FILESEXTRAPATHS``.
2373 3182
2374 Best practices dictate that you accomplish this by using 3183 Best practices dictate that you accomplish this by using
2375 ``FILESEXTRAPATHS`` from within a ``.bbappend`` file and that you 3184 :term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you
2376 prepend paths as follows: 3185 prepend paths as follows::
2377 ::
2378 3186
2379 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 3187 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
2380 3188
2381 In the above example, the build system first 3189 In the above example, the build system first
2382 looks for files in a directory that has the same name as the 3190 looks for files in a directory that has the same name as the
@@ -2384,7 +3192,7 @@ system and gives an overview of their function and contents.
2384 3192
2385 .. note:: 3193 .. note::
2386 3194
2387 When extending ``FILESEXTRAPATHS``, be sure to use the immediate 3195 When extending :term:`FILESEXTRAPATHS`, be sure to use the immediate
2388 expansion (``:=``) operator. Immediate expansion makes sure that 3196 expansion (``:=``) operator. Immediate expansion makes sure that
2389 BitBake evaluates :term:`THISDIR` at the time the 3197 BitBake evaluates :term:`THISDIR` at the time the
2390 directive is encountered rather than at some later time when 3198 directive is encountered rather than at some later time when
@@ -2396,26 +3204,23 @@ system and gives an overview of their function and contents.
2396 are directing BitBake to extend the path by prepending directories 3204 are directing BitBake to extend the path by prepending directories
2397 to the search path. 3205 to the search path.
2398 3206
2399 Here is another common use: 3207 Here is another common use::
2400 ::
2401 3208
2402 FILESEXTRAPATHS_prepend := "${THISDIR}/files:" 3209 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
2403 3210
2404 In this example, the build system extends the 3211 In this example, the build system extends the
2405 ``FILESPATH`` variable to include a directory named ``files`` that is 3212 :term:`FILESPATH` variable to include a directory named ``files`` that is
2406 in the same directory as the corresponding append file. 3213 in the same directory as the corresponding append file.
2407 3214
2408 This next example specifically adds three paths: 3215 This next example specifically adds three paths::
2409 ::
2410 3216
2411 FILESEXTRAPATHS_prepend := "path_1:path_2:path_3:" 3217 FILESEXTRAPATHS:prepend := "path_1:path_2:path_3:"
2412 3218
2413 A final example shows how you can extend the search path and include 3219 A final example shows how you can extend the search path and include
2414 a :term:`MACHINE`-specific override, which is useful 3220 a :term:`MACHINE`-specific override, which is useful
2415 in a BSP layer: 3221 in a BSP layer::
2416 ::
2417 3222
2418 FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:" 3223 FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:"
2419 3224
2420 The previous statement appears in the 3225 The previous statement appears in the
2421 ``linux-yocto-dev.bbappend`` file, which is found in the 3226 ``linux-yocto-dev.bbappend`` file, which is found in the
@@ -2427,83 +3232,78 @@ system and gives an overview of their function and contents.
2427 .. note:: 3232 .. note::
2428 3233
2429 For a layer that supports a single BSP, the override could just be 3234 For a layer that supports a single BSP, the override could just be
2430 the value of ``MACHINE``. 3235 the value of :term:`MACHINE`.
2431 3236
2432 By prepending paths in ``.bbappend`` files, you allow multiple append 3237 By prepending paths in ``.bbappend`` files, you allow multiple append
2433 files that reside in different layers but are used for the same 3238 files that reside in different layers but are used for the same
2434 recipe to correctly extend the path. 3239 recipe to correctly extend the path.
2435 3240
2436 :term:`FILESOVERRIDES` 3241 :term:`FILESOVERRIDES`
2437 A subset of :term:`OVERRIDES` used by the 3242 A colon-separated list to specify a subset of :term:`OVERRIDES` used by
2438 OpenEmbedded build system for creating 3243 the OpenEmbedded build system for creating :term:`FILESPATH`. The
2439 :term:`FILESPATH`. The ``FILESOVERRIDES`` variable 3244 :term:`FILESOVERRIDES` variable uses overrides to automatically extend
2440 uses overrides to automatically extend the 3245 the :term:`FILESPATH` variable. For an example of how that works, see the
2441 :term:`FILESPATH` variable. For an example of how 3246 :term:`FILESPATH` variable description. Additionally, you find more
2442 that works, see the :term:`FILESPATH` variable 3247 information on how overrides are handled in the
2443 description. Additionally, you find more information on how overrides 3248 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
2444 are handled in the
2445 ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
2446 section of the BitBake User Manual. 3249 section of the BitBake User Manual.
2447 3250
2448 By default, the ``FILESOVERRIDES`` variable is defined as: 3251 By default, the :term:`FILESOVERRIDES` variable is defined as::
2449 ::
2450 3252
2451 FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}" 3253 FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}"
2452 3254
2453 .. note:: 3255 .. note::
2454 3256
2455 Do not hand-edit the ``FILESOVERRIDES`` variable. The values match up 3257 Do not hand-edit the :term:`FILESOVERRIDES` variable. The values match up
2456 with expected overrides and are used in an expected manner by the 3258 with expected overrides and are used in an expected manner by the
2457 build system. 3259 build system.
2458 3260
2459 :term:`FILESPATH` 3261 :term:`FILESPATH`
2460 The default set of directories the OpenEmbedded build system uses 3262 A colon-separated list specifying the default set of directories the
2461 when searching for patches and files. 3263 OpenEmbedded build system uses when searching for patches and files.
2462 3264
2463 During the build process, BitBake searches each directory in 3265 During the build process, BitBake searches each directory in
2464 ``FILESPATH`` in the specified order when looking for files and 3266 :term:`FILESPATH` in the specified order when looking for files and
2465 patches specified by each ``file://`` URI in a recipe's 3267 patches specified by each ``file://`` URI in a recipe's
2466 :term:`SRC_URI` statements. 3268 :term:`SRC_URI` statements.
2467 3269
2468 The default value for the ``FILESPATH`` variable is defined in the 3270 The default value for the :term:`FILESPATH` variable is defined in the
2469 ``base.bbclass`` class found in ``meta/classes`` in the 3271 :ref:`ref-classes-base` class found in ``meta/classes-global`` in the
2470 :term:`Source Directory`: 3272 :term:`Source Directory`::
2471 ::
2472 3273
2473 FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \ 3274 FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
2474 "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}" 3275 "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
2475 3276
2476 The 3277 The
2477 ``FILESPATH`` variable is automatically extended using the overrides 3278 :term:`FILESPATH` variable is automatically extended using the overrides
2478 from the :term:`FILESOVERRIDES` variable. 3279 from the :term:`FILESOVERRIDES` variable.
2479 3280
2480 .. note:: 3281 .. note::
2481 3282
2482 - Do not hand-edit the ``FILESPATH`` variable. If you want the 3283 - Do not hand-edit the :term:`FILESPATH` variable. If you want the
2483 build system to look in directories other than the defaults, 3284 build system to look in directories other than the defaults,
2484 extend the ``FILESPATH`` variable by using the 3285 extend the :term:`FILESPATH` variable by using the
2485 :term:`FILESEXTRAPATHS` variable. 3286 :term:`FILESEXTRAPATHS` variable.
2486 3287
2487 - Be aware that the default ``FILESPATH`` directories do not map 3288 - Be aware that the default :term:`FILESPATH` directories do not map
2488 to directories in custom layers where append files 3289 to directories in custom layers where append files
2489 (``.bbappend``) are used. If you want the build system to find 3290 (``.bbappend``) are used. If you want the build system to find
2490 patches or files that reside with your append files, you need 3291 patches or files that reside with your append files, you need
2491 to extend the ``FILESPATH`` variable by using the 3292 to extend the :term:`FILESPATH` variable by using the
2492 ``FILESEXTRAPATHS`` variable. 3293 :term:`FILESEXTRAPATHS` variable.
2493 3294
2494 You can take advantage of this searching behavior in useful ways. For 3295 You can take advantage of this searching behavior in useful ways. For
2495 example, consider a case where the following directory structure 3296 example, consider a case where there is the following directory structure
2496 exists for general and machine-specific configurations: 3297 for general and machine-specific configurations::
2497 ::
2498 3298
2499 files/defconfig 3299 files/defconfig
2500 files/MACHINEA/defconfig 3300 files/MACHINEA/defconfig
2501 files/MACHINEB/defconfig 3301 files/MACHINEB/defconfig
2502 3302
2503 Also in the example, the ``SRC_URI`` statement contains 3303 Also in the example, the :term:`SRC_URI` statement contains
2504 "file://defconfig". Given this scenario, you can set 3304 "file://defconfig". Given this scenario, you can set
2505 :term:`MACHINE` to "MACHINEA" and cause the build 3305 :term:`MACHINE` to "MACHINEA" and cause the build
2506 system to use files from ``files/MACHINEA``. Set ``MACHINE`` to 3306 system to use files from ``files/MACHINEA``. Set :term:`MACHINE` to
2507 "MACHINEB" and the build system uses files from ``files/MACHINEB``. 3307 "MACHINEB" and the build system uses files from ``files/MACHINEB``.
2508 Finally, for any machine other than "MACHINEA" and "MACHINEB", the 3308 Finally, for any machine other than "MACHINEA" and "MACHINEB", the
2509 build system uses files from ``files/defconfig``. 3309 build system uses files from ``files/defconfig``.
@@ -2511,86 +3311,205 @@ system and gives an overview of their function and contents.
2511 You can find out more about the patching process in the 3311 You can find out more about the patching process in the
2512 ":ref:`overview-manual/concepts:patching`" section 3312 ":ref:`overview-manual/concepts:patching`" section
2513 in the Yocto Project Overview and Concepts Manual and the 3313 in the Yocto Project Overview and Concepts Manual and the
2514 ":ref:`dev-manual/common-tasks:patching code`" section in 3314 ":ref:`dev-manual/new-recipe:patching code`" section in
2515 the Yocto Project Development Tasks Manual. See the 3315 the Yocto Project Development Tasks Manual. See the
2516 :ref:`ref-tasks-patch` task as well. 3316 :ref:`ref-tasks-patch` task as well.
2517 3317
2518 :term:`FILESYSTEM_PERMS_TABLES` 3318 :term:`FILESYSTEM_PERMS_TABLES`
2519 Allows you to define your own file permissions settings table as part 3319 Allows you to define your own file permissions settings tables as part
2520 of your configuration for the packaging process. For example, suppose 3320 of your configuration for the packaging process. For example, suppose
2521 you need a consistent set of custom permissions for a set of groups 3321 you need a consistent set of custom permissions for a set of groups
2522 and users across an entire work project. It is best to do this in the 3322 and users across an entire work project. It is best to do this in the
2523 packages themselves but this is not always possible. 3323 packages themselves but this is not always possible.
2524 3324
2525 By default, the OpenEmbedded build system uses the ``fs-perms.txt``, 3325 By default, the OpenEmbedded build system uses the ``fs-perms.txt``,
2526 which is located in the ``meta/files`` folder in the :term:`Source Directory`. 3326 ``fs-perms-volatile-log.txt`` and ``fs-perms-volatile-tmp.txt`` which are
2527 If you create your own file 3327 located in the ``meta/files`` folder in the :term:`Source Directory`. If
2528 permissions setting table, you should place it in your layer or the 3328 you create your own permission setting table files, you should place
2529 distro's layer. 3329 those in your layer.
2530 3330
2531 You define the ``FILESYSTEM_PERMS_TABLES`` variable in the 3331 You can override the value of :term:`FILESYSTEM_PERMS_TABLES` variable
2532 ``conf/local.conf`` file, which is found in the :term:`Build Directory`, 3332 in your distribution configuration file to point to your custom
2533 to point to your custom 3333 permission table files. You can specify one or more file permissions
2534 ``fs-perms.txt``. You can specify more than a single file permissions 3334 setting tables. The paths that you specify to these files must be defined
2535 setting table. The paths you specify to these files must be defined
2536 within the :term:`BBPATH` variable. 3335 within the :term:`BBPATH` variable.
2537 3336
2538 For guidance on how to create your own file permissions settings 3337 In order to disable the volatile log, which is enabled by default, one
2539 table file, examine the existing ``fs-perms.txt``. 3338 can remove the ``files/fs-perms-volatile-log.txt`` value from
3339 ``FILESYSTEM_PERMS_TABLES``. Similarly, in order to disable the volatile
3340 tmp, one can remove the ``files/fs-perms-volatile-tmp.txt`` value.
3341
3342 For guidance on how to define your own file permissions settings
3343 tables, examine the existing ``fs-perms.txt``,
3344 ``fs-perms-volatile-log.txt`` and ``fs-perms-volatile-tmp.txt`` files.
3345
3346 :term:`FIRMWARE_COMPRESSION`
3347 The :term:`FIRMWARE_COMPRESSION` allows compressing the firmware provided
3348 by the ``linux-firmware`` recipe. The default value of this variable is an
3349 empty string (no compression), and the possible values it can take are
3350 ``xz`` and ``zst``. This can allow significant disk space savings.
3351
3352 For this to work, the Linux Kernel requires the
3353 ``CONFIG_FW_LOADER_COMPRESS_XZ`` or ``CONFIG_FW_LOADER_COMPRESS_ZSTD``
3354 configuration options to be set.
3355
3356 :term:`FIT_ADDRESS_CELLS`
3357 Specifies the value of the ``#address-cells`` value for the
3358 description of the FIT image.
3359
3360 The default value is set to "1" by the :ref:`ref-classes-kernel-fit-image`
3361 class, which corresponds to 32 bit addresses.
3362
3363 For platforms that need to set 64 bit addresses, for example in
3364 :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
3365 set this value to "2", as two 32 bit values (cells) will be needed
3366 to represent such addresses.
3367
3368 Here is an example setting "0x400000000" as a load address::
3369
3370 FIT_ADDRESS_CELLS = "2"
3371 UBOOT_LOADADDRESS = "0x04 0x00000000"
3372
3373 See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
3374
3375 :term:`FIT_CONF_DEFAULT_DTB`
3376 Specifies the default device tree binary (dtb) file for a FIT image
3377 when multiple ones are provided.
3378
3379 This variable is used in the :ref:`ref-classes-kernel-fit-image` class.
3380
3381 :term:`FIT_CONF_PREFIX`
3382 When using the :ref:`ref-classes-kernel-fit-image`, this is the prefix
3383 used for creating FIT configuration nodes. Its default value is "conf-".
2540 3384
2541 :term:`FIT_DESC` 3385 :term:`FIT_DESC`
2542 Specifies the description string encoded into a fitImage. The default 3386 Specifies the description string encoded into a FIT image. The
2543 value is set by the :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` 3387 default value is set by the :ref:`ref-classes-kernel-fit-image` class as
2544 class as follows:: 3388 follows::
2545 3389
2546 FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}" 3390 FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
2547 3391
2548 :term:`FIT_GENERATE_KEYS` 3392 :term:`FIT_GENERATE_KEYS`
2549 Decides whether to generate the keys for signing fitImage if they 3393 Decides whether to generate the keys for signing the FIT image if
2550 don't already exist. The keys are created in ``UBOOT_SIGN_KEYDIR``. 3394 they don't already exist. The keys are created in
2551 The default value is 0. 3395 :term:`UBOOT_SIGN_KEYDIR`. The default value is set to "0"
3396 by the :ref:`ref-classes-kernel-fit-image` class.
2552 3397
2553 :term:`FIT_HASH_ALG` 3398 :term:`FIT_HASH_ALG`
2554 Specifies the hash algorithm used in creating the FIT Image. For e.g. sha256. 3399 Specifies the hash algorithm used in creating the FIT Image.
3400 This variable is set by default to "sha256" by the
3401 :ref:`ref-classes-kernel-fit-image` class.
3402
3403 :term:`FIT_KERNEL_COMP_ALG`
3404 The compression algorithm to use for the kernel image inside the FIT Image.
3405 At present, the only supported values are "gzip" (default), "lzo" or "none".
3406 If you set this variable to anything other than "none" you may also need
3407 to set :term:`FIT_KERNEL_COMP_ALG_EXTENSION`.
3408
3409 This variable is used in the :ref:`ref-classes-kernel-uboot` class.
3410
3411 :term:`FIT_KERNEL_COMP_ALG_EXTENSION`
3412 File extension corresponding to :term:`FIT_KERNEL_COMP_ALG`. The default
3413 value is set ".gz" by the :ref:`ref-classes-kernel-uboot` class. If you
3414 set :term:`FIT_KERNEL_COMP_ALG` to "lzo", you may want to set this
3415 variable to ".lzo".
2555 3416
2556 :term:`FIT_KEY_GENRSA_ARGS` 3417 :term:`FIT_KEY_GENRSA_ARGS`
2557 Arguments to openssl genrsa for generating RSA private key for signing 3418 Arguments to ``openssl genrsa`` for generating a RSA private key for
2558 fitImage. The default value is "-F4". i.e. the public exponent 65537 to 3419 signing the FIT image. The default value is set to "-F4" by the
2559 use. 3420 :ref:`ref-classes-kernel-fit-image` class.
2560 3421
2561 :term:`FIT_KEY_REQ_ARGS` 3422 :term:`FIT_KEY_REQ_ARGS`
2562 Arguments to openssl req for generating certificate for signing fitImage. 3423 Arguments to ``openssl req`` for generating a certificate for signing
2563 The default value is "-batch -new". batch for non interactive mode 3424 the FIT image. The default value is "-batch -new" by the
2564 and new for generating new keys. 3425 :ref:`ref-classes-kernel-fit-image` class, "batch" for
3426 non interactive mode and "new" for generating new keys.
2565 3427
2566 :term:`FIT_KEY_SIGN_PKCS` 3428 :term:`FIT_KEY_SIGN_PKCS`
2567 Format for public key ceritifcate used in signing fitImage. 3429 Format for the public key certificate used for signing the FIT image.
2568 The default value is "x509". 3430 The default value is set to "x509" by the
3431 :ref:`ref-classes-kernel-fit-image` class.
3432
3433 :term:`FIT_PAD_ALG`
3434 Specifies the padding algorithm used in creating the FIT Image.
3435 The default value is set to "pkcs-1.5" by the
3436 :ref:`ref-classes-kernel-fit-image` class.
2569 3437
2570 :term:`FIT_SIGN_ALG` 3438 :term:`FIT_SIGN_ALG`
2571 Specifies the signature algorithm used in creating the FIT Image. 3439 Specifies the signature algorithm used in creating the FIT Image.
2572 For e.g. rsa2048. 3440 This variable is set by default to "rsa2048" by the
3441 :ref:`ref-classes-kernel-fit-image` class.
3442
3443 :term:`FIT_SIGN_INDIVIDUAL`
3444 If set to "1", the :ref:`ref-classes-kernel-fit-image` class signs each
3445 image node individually, including the kernel, DTB, RAM disk, and any
3446 other image types present in the FIT image, in addition to signing the
3447 configuration nodes.
3448 This can be useful if you need to verify signatures outside of the
3449 U-Boot boot process. By default, this variable is set to "0".
3450
3451 If :term:`UBOOT_SIGN_ENABLE` is set to "1" and
3452 :term:`FIT_SIGN_INDIVIDUAL` remains at its default value of "0", only the
3453 configuration nodes are signed. Since configuration nodes include hashes
3454 of their referenced image nodes, the integrity of the entire FIT image is
3455 ensured as long as the image nodes are loaded via the configuration nodes
3456 and the hashes of the image nodes are checked. That's usually the case.
3457
3458 Enabling :term:`FIT_SIGN_INDIVIDUAL` typically increases complexity for
3459 little benefit. There might be exceptions such as image nodes that are
3460 not referenced by any configuration node or loaded directly for whatever
3461 reason.
3462 For most use cases, setting this variable to "0" provides sufficient
3463 security.
3464
3465 For further details, refer to the official U-Boot documentation:
3466 `U-Boot fit signature <https://docs.u-boot.org/en/latest/usage/fit/signature.html>`__
3467 and more specifically at:
3468 `U-Boot signed configurations <https://docs.u-boot.org/en/latest/usage/fit/signature.html#signed-configurations>`__.
3469
3470 Signing only the image nodes is intentionally not implemented by
3471 :term:`OpenEmbedded-Core (OE-Core)`, as it is vulnerable to mix-and-match
3472 attacks.
2573 3473
2574 :term:`FIT_SIGN_NUMBITS` 3474 :term:`FIT_SIGN_NUMBITS`
2575 Size of private key in number of bits used in fitImage. The default 3475 Size of the private key used in the FIT image, in number of bits.
2576 value is "2048". 3476 The default value for this variable is set to "2048"
3477 by the :ref:`ref-classes-kernel-fit-image` class.
2577 3478
2578 :term:`FIT_SIGN_INDIVIDUAL` 3479 :term:`FIT_UBOOT_ENV`
2579 If set to "1", then the :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` 3480 This variable allows to add a U-Boot script as a text file to the
2580 class will sign the kernel, dtb and ramdisk images individually in addition 3481 FIT image. Such a script can be sourced from the U-Boot shell.
2581 to signing the fitImage itself. This could be useful if you are 3482
2582 intending to verify signatures in another context than booting via 3483 When inheriting the :ref:`ref-classes-kernel-fit-image` class a
2583 U-Boot. 3484 script file should be included in the :term:`SRC_URI` of the Linux
3485 kernel recipe.
3486
3487 Example:
3488
3489 - Add a script ``boot.cmd`` to the Linux kernel recipe::
3490
3491 FIT_UBOOT_ENV = "boot.cmd"
3492 SRC_URI += "file://${FIT_UBOOT_ENV}"
3493
3494 - Use the script file from the U-Boot shell. The name of the script in
3495 FIT image is ``bootscr-${FIT_UBOOT_ENV}``. This example loads the FIT
3496 image from a TFTP server::
3497
3498 tftp $loadaddr $fit_tftp_path
3499 source $loadaddr#bootscr-boot.cmd
3500
3501 More information can be found in the official U-Boot documentation:
3502 `U-Boot source command <https://docs.u-boot.org/en/latest/usage/cmd/source.html#fit-image.f>`__
2584 3503
2585 :term:`FONT_EXTRA_RDEPENDS` 3504 :term:`FONT_EXTRA_RDEPENDS`
2586 When inheriting the :ref:`fontcache <ref-classes-fontcache>` class, 3505 When inheriting the :ref:`ref-classes-fontcache` class,
2587 this variable specifies the runtime dependencies for font packages. 3506 this variable specifies the runtime dependencies for font packages.
2588 By default, the ``FONT_EXTRA_RDEPENDS`` is set to "fontconfig-utils". 3507 By default, the :term:`FONT_EXTRA_RDEPENDS` is set to "fontconfig-utils".
2589 3508
2590 :term:`FONT_PACKAGES` 3509 :term:`FONT_PACKAGES`
2591 When inheriting the :ref:`fontcache <ref-classes-fontcache>` class, 3510 When inheriting the :ref:`ref-classes-fontcache` class, this variable
2592 this variable identifies packages containing font files that need to 3511 identifies packages containing font files that need to be cached by
2593 be cached by Fontconfig. By default, the ``fontcache`` class assumes 3512 Fontconfig. By default, the :ref:`ref-classes-fontcache` class assumes
2594 that fonts are in the recipe's main package (i.e. 3513 that fonts are in the recipe's main package (i.e.
2595 ``${``\ :term:`PN`\ ``}``). Use this variable if fonts you 3514 ``${``\ :term:`PN`\ ``}``). Use this variable if fonts you
2596 need are in a package other than that main package. 3515 need are in a package other than that main package.
@@ -2602,7 +3521,7 @@ system and gives an overview of their function and contents.
2602 Set the variable to "1" to force the removal of these packages. 3521 Set the variable to "1" to force the removal of these packages.
2603 3522
2604 :term:`FULL_OPTIMIZATION` 3523 :term:`FULL_OPTIMIZATION`
2605 The options to pass in ``TARGET_CFLAGS`` and ``CFLAGS`` when 3524 The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when
2606 compiling an optimized system. This variable defaults to "-O2 -pipe 3525 compiling an optimized system. This variable defaults to "-O2 -pipe
2607 ${DEBUG_FLAGS}". 3526 ${DEBUG_FLAGS}".
2608 3527
@@ -2612,16 +3531,14 @@ system and gives an overview of their function and contents.
2612 Programming (ROP) attacks much more difficult to execute. 3531 Programming (ROP) attacks much more difficult to execute.
2613 3532
2614 By default the ``security_flags.inc`` file enables PIE by setting the 3533 By default the ``security_flags.inc`` file enables PIE by setting the
2615 variable as follows: 3534 variable as follows::
2616 ::
2617 3535
2618 GCCPIE ?= "--enable-default-pie" 3536 GCCPIE ?= "--enable-default-pie"
2619 3537
2620 :term:`GCCVERSION` 3538 :term:`GCCVERSION`
2621 Specifies the default version of the GNU C Compiler (GCC) used for 3539 Specifies the default version of the GNU C Compiler (GCC) used for
2622 compilation. By default, ``GCCVERSION`` is set to "8.x" in the 3540 compilation. By default, :term:`GCCVERSION` is set to "8.x" in the
2623 ``meta/conf/distro/include/tcmode-default.inc`` include file: 3541 ``meta/conf/distro/include/tcmode-default.inc`` include file::
2624 ::
2625 3542
2626 GCCVERSION ?= "8.%" 3543 GCCVERSION ?= "8.%"
2627 3544
@@ -2631,10 +3548,24 @@ system and gives an overview of their function and contents.
2631 :term:`GDB` 3548 :term:`GDB`
2632 The minimal command and arguments to run the GNU Debugger. 3549 The minimal command and arguments to run the GNU Debugger.
2633 3550
3551 :term:`GIR_EXTRA_LIBS_PATH`
3552 Allows to specify an extra search path for ``.so`` files
3553 in GLib related recipes using GObject introspection,
3554 and which do not compile without this setting.
3555 See the ":ref:`dev-manual/gobject-introspection:enabling gobject introspection support`"
3556 section for details.
3557
2634 :term:`GITDIR` 3558 :term:`GITDIR`
2635 The directory in which a local copy of a Git repository is stored 3559 The directory in which a local copy of a Git repository is stored
2636 when it is cloned. 3560 when it is cloned.
2637 3561
3562 :term:`GITHUB_BASE_URI`
3563 When inheriting the :ref:`ref-classes-github-releases`
3564 class, specifies the base URL for fetching releases for the github
3565 project you wish to fetch sources from. The default value is as follows::
3566
3567 GITHUB_BASE_URI ?= "https://github.com/${BPN}/${BPN}/releases/"
3568
2638 :term:`GLIBC_GENERATE_LOCALES` 3569 :term:`GLIBC_GENERATE_LOCALES`
2639 Specifies the list of GLIBC locales to generate should you not wish 3570 Specifies the list of GLIBC locales to generate should you not wish
2640 to generate all LIBC locals, which can be time consuming. 3571 to generate all LIBC locals, which can be time consuming.
@@ -2644,28 +3575,101 @@ system and gives an overview of their function and contents.
2644 If you specifically remove the locale ``en_US.UTF-8``, you must set 3575 If you specifically remove the locale ``en_US.UTF-8``, you must set
2645 :term:`IMAGE_LINGUAS` appropriately. 3576 :term:`IMAGE_LINGUAS` appropriately.
2646 3577
2647 You can set ``GLIBC_GENERATE_LOCALES`` in your ``local.conf`` file. 3578 You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file.
2648 By default, all locales are generated. 3579 By default, all locales are generated::
2649 ::
2650 3580
2651 GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8" 3581 GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
2652 3582
3583 :term:`GO_IMPORT`
3584 When inheriting the :ref:`ref-classes-go` class, this mandatory variable
3585 sets the import path for the Go package that will be created for the code
3586 to build. If you have a ``go.mod`` file in the source directory, this
3587 typically matches the path in the ``module`` line in this file.
3588
3589 Other Go programs importing this package will use this path.
3590
3591 Here is an example setting from the
3592 :yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>`
3593 recipe::
3594
3595 GO_IMPORT = "golang.org/x/example"
3596
3597 :term:`GO_INSTALL`
3598 When inheriting the :ref:`ref-classes-go` class, this optional variable
3599 specifies which packages in the sources should be compiled and
3600 installed in the Go build space by the
3601 `go install <https://go.dev/ref/mod#go-install>`__ command.
3602
3603 Here is an example setting from the
3604 :oe_git:`crucible </meta-openembedded/tree/meta-oe/recipes-support/crucible/>`
3605 recipe::
3606
3607 GO_INSTALL = "\
3608 ${GO_IMPORT}/cmd/crucible \
3609 ${GO_IMPORT}/cmd/habtool \
3610 "
3611
3612 By default, :term:`GO_INSTALL` is defined as::
3613
3614 GO_INSTALL ?= "${GO_IMPORT}/..."
3615
3616 The ``...`` wildcard means that it will catch all
3617 packages found in the sources.
3618
3619 See the :term:`GO_INSTALL_FILTEROUT` variable for
3620 filtering out unwanted packages from the ones
3621 found from the :term:`GO_INSTALL` value.
3622
3623 :term:`GO_INSTALL_FILTEROUT`
3624 When using the Go "vendor" mechanism to bring in dependencies for a Go
3625 package, the default :term:`GO_INSTALL` setting, which uses the ``...``
3626 wildcard, will include the vendored packages in the build, which produces
3627 incorrect results.
3628
3629 There are also some Go packages that are structured poorly, so that the
3630 ``...`` wildcard results in building example or test code that should not
3631 be included in the build, or could fail to build.
3632
3633 This optional variable allows for filtering out a subset of the sources.
3634 It defaults to excluding everything under the ``vendor`` subdirectory
3635 under package's main directory. This is the normal location for vendored
3636 packages, but it can be overridden by a recipe to filter out other
3637 subdirectories if needed.
3638
3639 :term:`GO_WORKDIR`
3640 When using Go Modules, the current working directory must be the directory
3641 containing the ``go.mod`` file, or one of its subdirectories. When the
3642 ``go`` tool is used, it will automatically look for the ``go.mod`` file
3643 in the Go working directory or in any parent directory, but not in
3644 subdirectories.
3645
3646 When using the :ref:`ref-classes-go-mod` class to use Go modules,
3647 the optional :term:`GO_WORKDIR` variable, defaulting to the value
3648 of :term:`GO_IMPORT`, allows to specify a different Go working directory.
3649
2653 :term:`GROUPADD_PARAM` 3650 :term:`GROUPADD_PARAM`
2654 When inheriting the :ref:`useradd <ref-classes-useradd>` class, 3651 When inheriting the :ref:`ref-classes-useradd` class,
2655 this variable specifies for a package what parameters should be 3652 this variable specifies for a package what parameters should be
2656 passed to the ``groupadd`` command if you wish to add a group to the 3653 passed to the ``groupadd`` command if you wish to add a group to the
2657 system when the package is installed. 3654 system when the package is installed.
2658 3655
2659 Here is an example from the ``dbus`` recipe: 3656 Here is an example from the ``dbus`` recipe::
2660 ::
2661 3657
2662 GROUPADD_PARAM_${PN} = "-r netdev" 3658 GROUPADD_PARAM:${PN} = "-r netdev"
3659
3660 More than one group can be added by separating each set of different
3661 groups' parameters with a semicolon.
3662
3663 Here is an example adding multiple groups from the ``useradd-example.bb``
3664 file in the ``meta-skeleton`` layer::
3665
3666 GROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2"
2663 3667
2664 For information on the standard Linux shell command 3668 For information on the standard Linux shell command
2665 ``groupadd``, see https://linux.die.net/man/8/groupadd. 3669 ``groupadd``, see https://linux.die.net/man/8/groupadd.
2666 3670
2667 :term:`GROUPMEMS_PARAM` 3671 :term:`GROUPMEMS_PARAM`
2668 When inheriting the :ref:`useradd <ref-classes-useradd>` class, 3672 When inheriting the :ref:`ref-classes-useradd` class,
2669 this variable specifies for a package what parameters should be 3673 this variable specifies for a package what parameters should be
2670 passed to the ``groupmems`` command if you wish to modify the members 3674 passed to the ``groupmems`` command if you wish to modify the members
2671 of a group when the package is installed. 3675 of a group when the package is installed.
@@ -2679,33 +3683,45 @@ system and gives an overview of their function and contents.
2679 ``local.conf`` or distribution configuration file to enable graphics 3683 ``local.conf`` or distribution configuration file to enable graphics
2680 and serial in the menu. 3684 and serial in the menu.
2681 3685
2682 See the :ref:`grub-efi <ref-classes-grub-efi>` class for more 3686 See the :ref:`ref-classes-grub-efi` class for more
2683 information on how this variable is used. 3687 information on how this variable is used.
2684 3688
3689 :term:`GRUB_MKIMAGE_OPTS`
3690 This variable controls additional options passed to the ``grub-mkimage``
3691 command in the GNU GRand Unified Bootloader (GRUB) recipe during the
3692 ``do_mkimage`` task.
3693
2685 :term:`GRUB_OPTS` 3694 :term:`GRUB_OPTS`
2686 Additional options to add to the GNU GRand Unified Bootloader (GRUB) 3695 Additional options to add to the GNU GRand Unified Bootloader (GRUB)
2687 configuration. Use a semi-colon character (``;``) to separate 3696 configuration. Use a semi-colon character (``;``) to separate
2688 multiple options. 3697 multiple options.
2689 3698
2690 The ``GRUB_OPTS`` variable is optional. See the 3699 The :term:`GRUB_OPTS` variable is optional. See the
2691 :ref:`grub-efi <ref-classes-grub-efi>` class for more information 3700 :ref:`ref-classes-grub-efi` class for more information
2692 on how this variable is used. 3701 on how this variable is used.
2693 3702
2694 :term:`GRUB_TIMEOUT` 3703 :term:`GRUB_TIMEOUT`
2695 Specifies the timeout before executing the default ``LABEL`` in the 3704 Specifies the timeout before executing the default ``LABEL`` in the
2696 GNU GRand Unified Bootloader (GRUB). 3705 GNU GRand Unified Bootloader (GRUB).
2697 3706
2698 The ``GRUB_TIMEOUT`` variable is optional. See the 3707 The :term:`GRUB_TIMEOUT` variable is optional. See the
2699 :ref:`grub-efi <ref-classes-grub-efi>` class for more information 3708 :ref:`ref-classes-grub-efi` class for more information
2700 on how this variable is used. 3709 on how this variable is used.
2701 3710
3711 :term:`GRUB_TITLE`
3712 Specifies custom titles for GRUB labels defined in :term:`LABELS`. See
3713 the :ref:`ref-classes-grub-efi` class for more information on how this
3714 variable is used.
3715
2702 :term:`GTKIMMODULES_PACKAGES` 3716 :term:`GTKIMMODULES_PACKAGES`
2703 When inheriting the 3717 When inheriting the :ref:`ref-classes-gtk-immodules-cache` class,
2704 :ref:`gtk-immodules-cache <ref-classes-gtk-immodules-cache>` class,
2705 this variable specifies the packages that contain the GTK+ input 3718 this variable specifies the packages that contain the GTK+ input
2706 method modules being installed when the modules are in packages other 3719 method modules being installed when the modules are in packages other
2707 than the main package. 3720 than the main package.
2708 3721
3722 :term:`HGDIR`
3723 See :term:`bitbake:HGDIR` in the BitBake manual.
3724
2709 :term:`HOMEPAGE` 3725 :term:`HOMEPAGE`
2710 Website where more information about the software the recipe is 3726 Website where more information about the software the recipe is
2711 building can be found. 3727 building can be found.
@@ -2725,11 +3741,25 @@ system and gives an overview of their function and contents.
2725 - mips 3741 - mips
2726 - mipsel 3742 - mipsel
2727 3743
3744 :term:`HOST_AS_ARCH`
3745 Specifies architecture-specific assembler flags.
3746
3747 Default initialization for :term:`HOST_AS_ARCH` varies depending on what
3748 is being built:
3749
3750 - :term:`TARGET_AS_ARCH` when building for the
3751 target
3752
3753 - :term:`BUILD_AS_ARCH` when building for the build host (i.e.
3754 ``-native``)
3755
3756 - :term:`SDK_AS_ARCH` when building for an SDK (i.e. ``nativesdk-``)
3757
2728 :term:`HOST_CC_ARCH` 3758 :term:`HOST_CC_ARCH`
2729 Specifies architecture-specific compiler flags that are passed to the 3759 Specifies architecture-specific compiler flags that are passed to the
2730 C compiler. 3760 C compiler.
2731 3761
2732 Default initialization for ``HOST_CC_ARCH`` varies depending on what 3762 Default initialization for :term:`HOST_CC_ARCH` varies depending on what
2733 is being built: 3763 is being built:
2734 3764
2735 - :term:`TARGET_CC_ARCH` when building for the 3765 - :term:`TARGET_CC_ARCH` when building for the
@@ -2738,8 +3768,20 @@ system and gives an overview of their function and contents.
2738 - :term:`BUILD_CC_ARCH` when building for the build host (i.e. 3768 - :term:`BUILD_CC_ARCH` when building for the build host (i.e.
2739 ``-native``) 3769 ``-native``)
2740 3770
2741 - ``BUILDSDK_CC_ARCH`` when building for an SDK (i.e. 3771 - :term:`SDK_CC_ARCH` when building for an SDK (i.e. ``nativesdk-``)
2742 ``nativesdk-``) 3772
3773 :term:`HOST_LD_ARCH`
3774 Specifies architecture-specific linker flags.
3775
3776 Default initialization for :term:`HOST_LD_ARCH` varies depending on what
3777 is being built:
3778
3779 - :term:`TARGET_LD_ARCH` when building for the target
3780
3781 - :term:`BUILD_LD_ARCH` when building for the build host (i.e.
3782 ``-native``)
3783
3784 - :term:`SDK_LD_ARCH` when building for an SDK (i.e. ``nativesdk-``)
2743 3785
2744 :term:`HOST_OS` 3786 :term:`HOST_OS`
2745 Specifies the name of the target operating system, which is normally 3787 Specifies the name of the target operating system, which is normally
@@ -2749,7 +3791,7 @@ system and gives an overview of their function and contents.
2749 "linux-musleabi" values possible. 3791 "linux-musleabi" values possible.
2750 3792
2751 :term:`HOST_PREFIX` 3793 :term:`HOST_PREFIX`
2752 Specifies the prefix for the cross-compile toolchain. ``HOST_PREFIX`` 3794 Specifies the prefix for the cross-compile toolchain. :term:`HOST_PREFIX`
2753 is normally the same as :term:`TARGET_PREFIX`. 3795 is normally the same as :term:`TARGET_PREFIX`.
2754 3796
2755 :term:`HOST_SYS` 3797 :term:`HOST_SYS`
@@ -2774,11 +3816,15 @@ system and gives an overview of their function and contents.
2774 - Given a recipe being built for a little-endian MIPS target running 3816 - Given a recipe being built for a little-endian MIPS target running
2775 Linux, the value might be "mipsel-linux". 3817 Linux, the value might be "mipsel-linux".
2776 3818
3819 :term:`HOST_VENDOR`
3820 Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the
3821 same as :term:`TARGET_VENDOR`.
3822
2777 :term:`HOSTTOOLS` 3823 :term:`HOSTTOOLS`
2778 A space-separated list (filter) of tools on the build host that 3824 A space-separated list (filter) of tools on the build host that
2779 should be allowed to be called from within build tasks. Using this 3825 should be allowed to be called from within build tasks. Using this
2780 filter helps reduce the possibility of host contamination. If a tool 3826 filter helps reduce the possibility of host contamination. If a tool
2781 specified in the value of ``HOSTTOOLS`` is not found on the build 3827 specified in the value of :term:`HOSTTOOLS` is not found on the build
2782 host, the OpenEmbedded build system produces an error and the build 3828 host, the OpenEmbedded build system produces an error and the build
2783 is not started. 3829 is not started.
2784 3830
@@ -2791,149 +3837,23 @@ system and gives an overview of their function and contents.
2791 filter helps reduce the possibility of host contamination. Unlike 3837 filter helps reduce the possibility of host contamination. Unlike
2792 :term:`HOSTTOOLS`, the OpenEmbedded build system 3838 :term:`HOSTTOOLS`, the OpenEmbedded build system
2793 does not produce an error if a tool specified in the value of 3839 does not produce an error if a tool specified in the value of
2794 ``HOSTTOOLS_NONFATAL`` is not found on the build host. Thus, you can 3840 :term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can
2795 use ``HOSTTOOLS_NONFATAL`` to filter optional host tools. 3841 use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools.
2796
2797 :term:`HOST_VENDOR`
2798 Specifies the name of the vendor. ``HOST_VENDOR`` is normally the
2799 same as :term:`TARGET_VENDOR`.
2800
2801 :term:`ICECC_DISABLED`
2802 Disables or enables the ``icecc`` (Icecream) function. For more
2803 information on this function and best practices for using this
2804 variable, see the ":ref:`icecc.bbclass <ref-classes-icecc>`"
2805 section.
2806
2807 Setting this variable to "1" in your ``local.conf`` disables the
2808 function:
2809 ::
2810
2811 ICECC_DISABLED ??= "1"
2812
2813 To enable the function, set the variable as follows:
2814 ::
2815
2816 ICECC_DISABLED = ""
2817
2818 :term:`ICECC_ENV_EXEC`
2819 Points to the ``icecc-create-env`` script that you provide. This
2820 variable is used by the :ref:`icecc <ref-classes-icecc>` class. You
2821 set this variable in your ``local.conf`` file.
2822
2823 If you do not point to a script that you provide, the OpenEmbedded
2824 build system uses the default script provided by the
2825 ``icecc-create-env.bb`` recipe, which is a modified version and not
2826 the one that comes with ``icecc``.
2827
2828 :term:`ICECC_PARALLEL_MAKE`
2829 Extra options passed to the ``make`` command during the
2830 :ref:`ref-tasks-compile` task that specify parallel
2831 compilation. This variable usually takes the form of "-j x", where x
2832 represents the maximum number of parallel threads ``make`` can run.
2833
2834 .. note::
2835
2836 The options passed affect builds on all enabled machines on the
2837 network, which are machines running the ``iceccd`` daemon.
2838
2839 If your enabled machines support multiple cores, coming up with the
2840 maximum number of parallel threads that gives you the best
2841 performance could take some experimentation since machine speed,
2842 network lag, available memory, and existing machine loads can all
2843 affect build time. Consequently, unlike the
2844 :term:`PARALLEL_MAKE` variable, there is no
2845 rule-of-thumb for setting ``ICECC_PARALLEL_MAKE`` to achieve optimal
2846 performance.
2847
2848 If you do not set ``ICECC_PARALLEL_MAKE``, the build system does not
2849 use it (i.e. the system does not detect and assign the number of
2850 cores as is done with ``PARALLEL_MAKE``).
2851
2852 :term:`ICECC_PATH`
2853 The location of the ``icecc`` binary. You can set this variable in
2854 your ``local.conf`` file. If your ``local.conf`` file does not define
2855 this variable, the :ref:`icecc <ref-classes-icecc>` class attempts
2856 to define it by locating ``icecc`` using ``which``.
2857
2858 :term:`ICECC_USER_CLASS_BL`
2859 Identifies user classes that you do not want the Icecream distributed
2860 compile support to consider. This variable is used by the
2861 :ref:`icecc <ref-classes-icecc>` class. You set this variable in
2862 your ``local.conf`` file.
2863
2864 When you list classes using this variable, you are "blacklisting"
2865 them from distributed compilation across remote hosts. Any classes
2866 you list will be distributed and compiled locally.
2867
2868 :term:`ICECC_USER_PACKAGE_BL`
2869 Identifies user recipes that you do not want the Icecream distributed
2870 compile support to consider. This variable is used by the
2871 :ref:`icecc <ref-classes-icecc>` class. You set this variable in
2872 your ``local.conf`` file.
2873
2874 When you list packages using this variable, you are "blacklisting"
2875 them from distributed compilation across remote hosts. Any packages
2876 you list will be distributed and compiled locally.
2877
2878 :term:`ICECC_USER_PACKAGE_WL`
2879 Identifies user recipes that use an empty
2880 :term:`PARALLEL_MAKE` variable that you want to
2881 force remote distributed compilation on using the Icecream
2882 distributed compile support. This variable is used by the
2883 :ref:`icecc <ref-classes-icecc>` class. You set this variable in
2884 your ``local.conf`` file.
2885 3842
2886 :term:`IMAGE_BASENAME` 3843 :term:`IMAGE_BASENAME`
2887 The base name of image output files. This variable defaults to the 3844 The base name of image output files. This variable defaults to the
2888 recipe name (``${``\ :term:`PN`\ ``}``). 3845 recipe name (``${``\ :term:`PN`\ ``}``).
2889 3846
2890 :term:`IMAGE_EFI_BOOT_FILES`
2891 A space-separated list of files installed into the boot partition
2892 when preparing an image using the Wic tool with the
2893 ``bootimg-efi`` source plugin. By default,
2894 the files are
2895 installed under the same name as the source files. To change the
2896 installed name, separate it from the original name with a semi-colon
2897 (;). Source files need to be located in
2898 :term:`DEPLOY_DIR_IMAGE`. Here are two
2899 examples:
2900 ::
2901
2902 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2"
2903 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio"
2904
2905 Alternatively, source files can be picked up using a glob pattern. In
2906 this case, the destination file must have the same name as the base
2907 name of the source file path. To install files into a directory
2908 within the target location, pass its name after a semi-colon (;).
2909 Here are two examples:
2910 ::
2911
2912 IMAGE_EFI_BOOT_FILES = "boot/loader/*"
2913 IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/"
2914
2915 The first example
2916 installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/``
2917 into the root of the target partition. The second example installs
2918 the same files into a ``boot`` directory within the target partition.
2919
2920 You can find information on how to use the Wic tool in the
2921 ":ref:`dev-manual/common-tasks:creating partitioned images using wic`"
2922 section of the Yocto Project Development Tasks Manual. Reference
2923 material for Wic is located in the
2924 ":doc:`/ref-manual/kickstart`" chapter.
2925
2926 :term:`IMAGE_BOOT_FILES` 3847 :term:`IMAGE_BOOT_FILES`
2927 A space-separated list of files installed into the boot partition 3848 A space-separated list of files installed into the boot partition
2928 when preparing an image using the Wic tool with the 3849 when preparing an image using the Wic tool with the
2929 ``bootimg-partition`` source plugin. By default, 3850 ``bootimg_partition`` source plugin. By default,
2930 the files are 3851 the files are
2931 installed under the same name as the source files. To change the 3852 installed under the same name as the source files. To change the
2932 installed name, separate it from the original name with a semi-colon 3853 installed name, separate it from the original name with a semi-colon
2933 (;). Source files need to be located in 3854 (;). Source files need to be located in
2934 :term:`DEPLOY_DIR_IMAGE`. Here are two 3855 :term:`DEPLOY_DIR_IMAGE`. Here are two
2935 examples: 3856 examples::
2936 ::
2937 3857
2938 IMAGE_BOOT_FILES = "u-boot.img uImage;kernel" 3858 IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"
2939 IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}" 3859 IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}"
@@ -2942,8 +3862,7 @@ system and gives an overview of their function and contents.
2942 this case, the destination file must have the same name as the base 3862 this case, the destination file must have the same name as the base
2943 name of the source file path. To install files into a directory 3863 name of the source file path. To install files into a directory
2944 within the target location, pass its name after a semi-colon (;). 3864 within the target location, pass its name after a semi-colon (;).
2945 Here are two examples: 3865 Here are two examples::
2946 ::
2947 3866
2948 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*" 3867 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*"
2949 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/" 3868 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"
@@ -2954,50 +3873,89 @@ system and gives an overview of their function and contents.
2954 the same files into a ``boot`` directory within the target partition. 3873 the same files into a ``boot`` directory within the target partition.
2955 3874
2956 You can find information on how to use the Wic tool in the 3875 You can find information on how to use the Wic tool in the
2957 ":ref:`dev-manual/common-tasks:creating partitioned images using wic`" 3876 ":ref:`dev-manual/wic:creating partitioned images using wic`"
2958 section of the Yocto Project Development Tasks Manual. Reference 3877 section of the Yocto Project Development Tasks Manual. Reference
2959 material for Wic is located in the 3878 material for Wic is located in the
2960 ":doc:`/ref-manual/kickstart`" chapter. 3879 ":doc:`/ref-manual/kickstart`" chapter.
2961 3880
2962 :term:`IMAGE_CLASSES` 3881 :term:`IMAGE_BUILDINFO_FILE`
2963 A list of classes that all images should inherit. You typically use 3882 When using the :ref:`ref-classes-image-buildinfo` class,
2964 this variable to specify the list of classes that register the 3883 specifies the file in the image to write the build information into. The
2965 different types of images the OpenEmbedded build system creates. 3884 default value is "``${sysconfdir}/buildinfo``".
2966 3885
2967 The default value for ``IMAGE_CLASSES`` is ``image_types``. You can 3886 :term:`IMAGE_BUILDINFO_VARS`
2968 set this variable in your ``local.conf`` or in a distribution 3887 When using the :ref:`ref-classes-image-buildinfo` class,
2969 configuration file. 3888 specifies the list of variables to include in the `Build Configuration`
3889 section of the output file (as a space-separated list). Defaults to
3890 ":term:`DISTRO` :term:`DISTRO_VERSION`".
2970 3891
2971 For more information, see ``meta/classes/image_types.bbclass`` in the 3892 :term:`IMAGE_CLASSES`
2972 :term:`Source Directory`. 3893 A list of classes that all images should inherit. This is typically used
3894 to enable functionality across all image recipes.
3895
3896 Classes specified in :term:`IMAGE_CLASSES` must be located in the
3897 ``classes-recipe/`` or ``classes/`` subdirectories.
2973 3898
2974 :term:`IMAGE_CMD` 3899 :term:`IMAGE_CMD`
2975 Specifies the command to create the image file for a specific image 3900 Specifies the command to create the image file for a specific image
2976 type, which corresponds to the value set set in 3901 type, which corresponds to the value set in
2977 :term:`IMAGE_FSTYPES`, (e.g. ``ext3``, 3902 :term:`IMAGE_FSTYPES`, (e.g. ``ext3``,
2978 ``btrfs``, and so forth). When setting this variable, you should use 3903 ``btrfs``, and so forth). When setting this variable, you should use
2979 an override for the associated type. Here is an example: 3904 an override for the associated type. Here is an example::
2980 ::
2981 3905
2982 IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} \ 3906 IMAGE_CMD:jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \
2983 --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ 3907 --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 \
2984 ${EXTRA_IMAGECMD}" 3908 ${EXTRA_IMAGECMD}"
2985 3909
2986 You typically do not need to set this variable unless you are adding 3910 You typically do not need to set this variable unless you are adding
2987 support for a new image type. For more examples on how to set this 3911 support for a new image type. For more examples on how to set this
2988 variable, see the :ref:`image_types <ref-classes-image_types>` 3912 variable, see the :ref:`ref-classes-image_types`
2989 class file, which is ``meta/classes/image_types.bbclass``. 3913 class file, which is ``meta/classes-recipe/image_types.bbclass``.
2990 3914
2991 :term:`IMAGE_DEVICE_TABLES` 3915 :term:`IMAGE_DEVICE_TABLES`
2992 Specifies one or more files that contain custom device tables that 3916 Specifies one or more files that contain custom device tables that
2993 are passed to the ``makedevs`` command as part of creating an image. 3917 are passed to the ``makedevs`` command as part of creating an image.
2994 These files list basic device nodes that should be created under 3918 These files list basic device nodes that should be created under
2995 ``/dev`` within the image. If ``IMAGE_DEVICE_TABLES`` is not set, 3919 ``/dev`` within the image. If :term:`IMAGE_DEVICE_TABLES` is not set,
2996 ``files/device_table-minimal.txt`` is used, which is located by 3920 ``files/device_table-minimal.txt`` is used, which is located by
2997 :term:`BBPATH`. For details on how you should write 3921 :term:`BBPATH`. For details on how you should write
2998 device table files, see ``meta/files/device_table-minimal.txt`` as an 3922 device table files, see ``meta/files/device_table-minimal.txt`` as an
2999 example. 3923 example.
3000 3924
3925 :term:`IMAGE_EFI_BOOT_FILES`
3926 A space-separated list of files installed into the boot partition
3927 when preparing an image using the Wic tool with the
3928 ``bootimg_efi`` source plugin. By default,
3929 the files are
3930 installed under the same name as the source files. To change the
3931 installed name, separate it from the original name with a semi-colon
3932 (;). Source files need to be located in
3933 :term:`DEPLOY_DIR_IMAGE`. Here are two
3934 examples::
3935
3936 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2"
3937 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio"
3938
3939 Alternatively, source files can be picked up using a glob pattern. In
3940 this case, the destination file must have the same name as the base
3941 name of the source file path. To install files into a directory
3942 within the target location, pass its name after a semi-colon (;).
3943 Here are two examples::
3944
3945 IMAGE_EFI_BOOT_FILES = "boot/loader/*"
3946 IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/"
3947
3948 The first example
3949 installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/``
3950 into the root of the target partition. The second example installs
3951 the same files into a ``boot`` directory within the target partition.
3952
3953 You can find information on how to use the Wic tool in the
3954 ":ref:`dev-manual/wic:creating partitioned images using wic`"
3955 section of the Yocto Project Development Tasks Manual. Reference
3956 material for Wic is located in the
3957 ":doc:`/ref-manual/kickstart`" chapter.
3958
3001 :term:`IMAGE_FEATURES` 3959 :term:`IMAGE_FEATURES`
3002 The primary list of features to include in an image. Typically, you 3960 The primary list of features to include in an image. Typically, you
3003 configure this variable in an image recipe. Although you can use this 3961 configure this variable in an image recipe. Although you can use this
@@ -3014,15 +3972,14 @@ system and gives an overview of their function and contents.
3014 the ":ref:`ref-features-image`" section. 3972 the ":ref:`ref-features-image`" section.
3015 3973
3016 For an example that shows how to customize your image by using this 3974 For an example that shows how to customize your image by using this
3017 variable, see the ":ref:`dev-manual/common-tasks:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``" 3975 variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
3018 section in the Yocto Project Development Tasks Manual. 3976 section in the Yocto Project Development Tasks Manual.
3019 3977
3020 :term:`IMAGE_FSTYPES` 3978 :term:`IMAGE_FSTYPES`
3021 Specifies the formats the OpenEmbedded build system uses during the 3979 Specifies the formats the OpenEmbedded build system uses during the
3022 build when creating the root filesystem. For example, setting 3980 build when creating the root filesystem. For example, setting
3023 ``IMAGE_FSTYPES`` as follows causes the build system to create root 3981 :term:`IMAGE_FSTYPES` as follows causes the build system to create root
3024 filesystems using two formats: ``.ext3`` and ``.tar.bz2``: 3982 filesystems using two formats: ``.ext3`` and ``.tar.bz2``::
3025 ::
3026 3983
3027 IMAGE_FSTYPES = "ext3 tar.bz2" 3984 IMAGE_FSTYPES = "ext3 tar.bz2"
3028 3985
@@ -3032,31 +3989,29 @@ system and gives an overview of their function and contents.
3032 .. note:: 3989 .. note::
3033 3990
3034 - If an image recipe uses the "inherit image" line and you are 3991 - If an image recipe uses the "inherit image" line and you are
3035 setting ``IMAGE_FSTYPES`` inside the recipe, you must set 3992 setting :term:`IMAGE_FSTYPES` inside the recipe, you must set
3036 ``IMAGE_FSTYPES`` prior to using the "inherit image" line. 3993 :term:`IMAGE_FSTYPES` prior to using the "inherit image" line.
3037 3994
3038 - Due to the way the OpenEmbedded build system processes this 3995 - Due to the way the OpenEmbedded build system processes this
3039 variable, you cannot update its contents by using ``_append`` 3996 variable, you cannot update its contents by using ``:append``
3040 or ``_prepend``. You must use the ``+=`` operator to add one or 3997 or ``:prepend``. You must use the ``+=`` operator to add one or
3041 more options to the ``IMAGE_FSTYPES`` variable. 3998 more options to the :term:`IMAGE_FSTYPES` variable.
3042 3999
3043 :term:`IMAGE_INSTALL` 4000 :term:`IMAGE_INSTALL`
3044 Used by recipes to specify the packages to install into an image 4001 Used by recipes to specify the packages to install into an image
3045 through the :ref:`image <ref-classes-image>` class. Use the 4002 through the :ref:`ref-classes-image` class. Use the
3046 ``IMAGE_INSTALL`` variable with care to avoid ordering issues. 4003 :term:`IMAGE_INSTALL` variable with care to avoid ordering issues.
3047 4004
3048 Image recipes set ``IMAGE_INSTALL`` to specify the packages to 4005 Image recipes set :term:`IMAGE_INSTALL` to specify the packages to
3049 install into an image through ``image.bbclass``. Additionally, 4006 install into an image through :ref:`ref-classes-image`. Additionally,
3050 "helper" classes such as the 4007 there are "helper" classes such as the :ref:`ref-classes-core-image`
3051 :ref:`core-image <ref-classes-core-image>` class exist that can 4008 class which can take lists used with :term:`IMAGE_FEATURES` and turn
3052 take lists used with ``IMAGE_FEATURES`` and turn them into 4009 them into auto-generated entries in :term:`IMAGE_INSTALL` in addition
3053 auto-generated entries in ``IMAGE_INSTALL`` in addition to its 4010 to its default contents.
3054 default contents.
3055 4011
3056 When you use this variable, it is best to use it as follows: 4012 When you use this variable, it is best to use it as follows::
3057 ::
3058 4013
3059 IMAGE_INSTALL_append = " package-name" 4014 IMAGE_INSTALL:append = " package-name"
3060 4015
3061 Be sure to include the space 4016 Be sure to include the space
3062 between the quotation character and the start of the package name or 4017 between the quotation character and the start of the package name or
@@ -3066,39 +4021,38 @@ system and gives an overview of their function and contents.
3066 4021
3067 - When working with a 4022 - When working with a
3068 :ref:`core-image-minimal-initramfs <ref-manual/images:images>` 4023 :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
3069 image, do not use the ``IMAGE_INSTALL`` variable to specify 4024 image, do not use the :term:`IMAGE_INSTALL` variable to specify
3070 packages for installation. Instead, use the 4025 packages for installation. Instead, use the
3071 :term:`PACKAGE_INSTALL` variable, which 4026 :term:`PACKAGE_INSTALL` variable, which
3072 allows the initial RAM filesystem (initramfs) recipe to use a 4027 allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a
3073 fixed set of packages and not be affected by ``IMAGE_INSTALL``. 4028 fixed set of packages and not be affected by :term:`IMAGE_INSTALL`.
3074 For information on creating an initramfs, see the 4029 For information on creating an :term:`Initramfs`, see the
3075 ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" 4030 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
3076 section in the Yocto Project Development Tasks Manual. 4031 section in the Yocto Project Development Tasks Manual.
3077 4032
3078 - Using ``IMAGE_INSTALL`` with the 4033 - Using :term:`IMAGE_INSTALL` with the
3079 :ref:`+= <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>` 4034 :ref:`+= <bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>`
3080 BitBake operator within the ``/conf/local.conf`` file or from 4035 BitBake operator within the ``/conf/local.conf`` file or from
3081 within an image recipe is not recommended. Use of this operator 4036 within an image recipe is not recommended. Use of this operator in
3082 in these ways can cause ordering issues. Since 4037 these ways can cause ordering issues. Since
3083 ``core-image.bbclass`` sets ``IMAGE_INSTALL`` to a default 4038 :ref:`ref-classes-core-image` sets :term:`IMAGE_INSTALL` to a
3084 value using the 4039 default value using the
3085 :ref:`?= <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>` 4040 :ref:`?= <bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>`
3086 operator, using a ``+=`` operation against ``IMAGE_INSTALL`` 4041 operator, using a ``+=`` operation against :term:`IMAGE_INSTALL`
3087 results in unexpected behavior when used within 4042 results in unexpected behavior when used within
3088 ``conf/local.conf``. Furthermore, the same operation from 4043 ``conf/local.conf``. Furthermore, the same operation from within an
3089 within an image recipe may or may not succeed depending on the 4044 image recipe may or may not succeed depending on the specific
3090 specific situation. In both these cases, the behavior is 4045 situation. In both these cases, the behavior is contrary to how
3091 contrary to how most users expect the ``+=`` operator to work. 4046 most users expect the ``+=`` operator to work.
3092 4047
3093 :term:`IMAGE_LINGUAS` 4048 :term:`IMAGE_LINGUAS`
3094 Specifies the list of locales to install into the image during the 4049 Specifies the list of locales to install into the image during the
3095 root filesystem construction process. The OpenEmbedded build system 4050 root filesystem construction process. The OpenEmbedded build system
3096 automatically splits locale files, which are used for localization, 4051 automatically splits locale files, which are used for localization,
3097 into separate packages. Setting the ``IMAGE_LINGUAS`` variable 4052 into separate packages. Setting the :term:`IMAGE_LINGUAS` variable
3098 ensures that any locale packages that correspond to packages already 4053 ensures that any locale packages that correspond to packages already
3099 selected for installation into the image are also installed. Here is 4054 selected for installation into the image are also installed. Here is
3100 an example: 4055 an example::
3101 ::
3102 4056
3103 IMAGE_LINGUAS = "pt-br de-de" 4057 IMAGE_LINGUAS = "pt-br de-de"
3104 4058
@@ -3116,54 +4070,91 @@ system and gives an overview of their function and contents.
3116 :term:`IMAGE_LINK_NAME` 4070 :term:`IMAGE_LINK_NAME`
3117 The name of the output image symlink (which does not include 4071 The name of the output image symlink (which does not include
3118 the version part as :term:`IMAGE_NAME` does). The default value 4072 the version part as :term:`IMAGE_NAME` does). The default value
3119 is derived using the :term:`IMAGE_BASENAME` and :term:`MACHINE` 4073 is derived using the :term:`IMAGE_BASENAME` and
3120 variables: 4074 :term:`IMAGE_MACHINE_SUFFIX` variables::
3121 :: 4075
4076 IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}"
4077
4078 .. note::
4079
4080 It is possible to set this to "" to disable symlink creation,
4081 however, you also need to set :term:`IMAGE_NAME` to still have
4082 a reasonable value e.g.::
3122 4083
3123 IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}-${MACHINE}" 4084 IMAGE_LINK_NAME = ""
4085 IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
3124 4086
4087 :term:`IMAGE_MACHINE_SUFFIX`
4088 Specifies the by default machine-specific suffix for image file names
4089 (before the extension). The default value is set as follows::
4090
4091 IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}"
4092
4093 The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE`
4094 subdirectory, so you may find it unnecessary to also include this suffix
4095 in the name of every image file. If you prefer to remove the suffix you
4096 can set this variable to an empty string::
4097
4098 IMAGE_MACHINE_SUFFIX = ""
4099
4100 (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.)
3125 4101
3126 :term:`IMAGE_MANIFEST` 4102 :term:`IMAGE_MANIFEST`
3127 The manifest file for the image. This file lists all the installed 4103 The manifest file for the image. This file lists all the installed
3128 packages that make up the image. The file contains package 4104 packages that make up the image. The file contains package
3129 information on a line-per-package basis as follows: 4105 information on a line-per-package basis as follows::
3130 ::
3131 4106
3132 packagename packagearch version 4107 packagename packagearch version
3133 4108
3134 The :ref:`image <ref-classes-image>` class defines the manifest 4109 The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class defines the manifest
3135 file as follows: 4110 file as follows::
3136 ::
3137 4111
3138 IMAGE_MANIFEST ="${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest" 4112 IMAGE_MANIFEST = "${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest"
3139 4113
3140 The location is 4114 The location is
3141 derived using the :term:`DEPLOY_DIR_IMAGE` 4115 derived using the :term:`IMGDEPLOYDIR`
3142 and :term:`IMAGE_NAME` variables. You can find 4116 and :term:`IMAGE_NAME` variables. You can find
3143 information on how the image is created in the ":ref:`overview-manual/concepts:image generation`" 4117 information on how the image is created in the ":ref:`overview-manual/concepts:image generation`"
3144 section in the Yocto Project Overview and Concepts Manual. 4118 section in the Yocto Project Overview and Concepts Manual.
3145 4119
3146 :term:`IMAGE_NAME` 4120 :term:`IMAGE_NAME`
3147 The name of the output image files minus the extension. This variable 4121 The name of the output image files minus the extension. By default
3148 is derived using the :term:`IMAGE_BASENAME`, 4122 this variable is set using the :term:`IMAGE_LINK_NAME`, and
3149 :term:`MACHINE`, and :term:`IMAGE_VERSION_SUFFIX` 4123 :term:`IMAGE_VERSION_SUFFIX` variables::
3150 variables:
3151 ::
3152 4124
3153 IMAGE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}" 4125 IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}"
3154 4126
3155 :term:`IMAGE_NAME_SUFFIX` 4127 :term:`IMAGE_NAME_SUFFIX`
3156 Suffix used for the image output file name - defaults to ``".rootfs"`` 4128 Suffix used for the image output filename --- defaults to ``".rootfs"``
3157 to distinguish the image file from other files created during image 4129 to distinguish the image file from other files created during image
3158 building; however if this suffix is redundant or not desired you can 4130 building; however if this suffix is redundant or not desired you can
3159 clear the value of this variable (set the value to ""). For example, 4131 clear the value of this variable (set the value to ""). For example,
3160 this is typically cleared in initramfs image recipes. 4132 this is typically cleared in :term:`Initramfs` image recipes.
4133
4134 :term:`IMAGE_OUTPUT_MANIFEST`
4135 When inheriting the :ref:`ref-classes-image` class directly or through the
4136 :ref:`ref-classes-core-image` class, the :term:`IMAGE_OUTPUT_MANIFEST`
4137 points to a manifest ``json`` file that lists what images were created by
4138 various image creation tasks (as defined by the :term:`IMAGE_FSTYPES`
4139 variable). It is set in the :ref:`ref-classes-image` class as follows::
4140
4141 IMAGE_OUTPUT_MANIFEST = "${IMAGE_OUTPUT_MANIFEST_DIR}/manifest.json"
4142
4143 :term:`IMAGE_OUTPUT_MANIFEST_DIR`
4144 When inheriting the :ref:`ref-classes-image` class directly or through the
4145 :ref:`ref-classes-core-image` class, the :term:`IMAGE_OUTPUT_MANIFEST_DIR` points to
4146 a directory that stores a manifest ``json`` file that lists what
4147 images were created by various image creation tasks (as defined by the
4148 :term:`IMAGE_FSTYPES` variable). It is set in the :ref:`ref-classes-image`
4149 class as follows::
4150
4151 IMAGE_OUTPUT_MANIFEST_DIR = "${WORKDIR}/deploy-image-output-manifest"
3161 4152
3162 :term:`IMAGE_OVERHEAD_FACTOR` 4153 :term:`IMAGE_OVERHEAD_FACTOR`
3163 Defines a multiplier that the build system applies to the initial 4154 Defines a multiplier that the build system applies to the initial
3164 image size for cases when the multiplier times the returned disk 4155 image size for cases when the multiplier times the returned disk
3165 usage value for the image is greater than the sum of 4156 usage value for the image is greater than the sum of
3166 ``IMAGE_ROOTFS_SIZE`` and ``IMAGE_ROOTFS_EXTRA_SPACE``. The result of 4157 :term:`IMAGE_ROOTFS_SIZE` and :term:`IMAGE_ROOTFS_EXTRA_SPACE`. The result of
3167 the multiplier applied to the initial image size creates free disk 4158 the multiplier applied to the initial image size creates free disk
3168 space in the image as overhead. By default, the build process uses a 4159 space in the image as overhead. By default, the build process uses a
3169 multiplier of 1.3 for this variable. This default value results in 4160 multiplier of 1.3 for this variable. This default value results in
@@ -3172,59 +4163,49 @@ system and gives an overview of their function and contents.
3172 post install scripts and the package management system uses disk 4163 post install scripts and the package management system uses disk
3173 space inside this overhead area. Consequently, the multiplier does 4164 space inside this overhead area. Consequently, the multiplier does
3174 not produce an image with all the theoretical free disk space. See 4165 not produce an image with all the theoretical free disk space. See
3175 ``IMAGE_ROOTFS_SIZE`` for information on how the build system 4166 :term:`IMAGE_ROOTFS_SIZE` for information on how the build system
3176 determines the overall image size. 4167 determines the overall image size.
3177 4168
3178 The default 30% free disk space typically gives the image enough room 4169 The default 30% free disk space typically gives the image enough room
3179 to boot and allows for basic post installs while still leaving a 4170 to boot and allows for basic post installs while still leaving a
3180 small amount of free disk space. If 30% free space is inadequate, you 4171 small amount of free disk space. If 30% free space is inadequate, you
3181 can increase the default value. For example, the following setting 4172 can increase the default value. For example, the following setting
3182 gives you 50% free space added to the image: 4173 gives you 50% free space added to the image::
3183 ::
3184 4174
3185 IMAGE_OVERHEAD_FACTOR = "1.5" 4175 IMAGE_OVERHEAD_FACTOR = "1.5"
3186 4176
3187 Alternatively, you can ensure a specific amount of free disk space is 4177 Alternatively, you can ensure a specific amount of free disk space is
3188 added to the image by using the ``IMAGE_ROOTFS_EXTRA_SPACE`` 4178 added to the image by using the :term:`IMAGE_ROOTFS_EXTRA_SPACE`
3189 variable. 4179 variable.
3190 4180
4181 When using Wic tool, beware that a second overhead factor is also applied.
4182 This overhead value is defined by the ``--overhead-factor`` option, which
4183 defaults to "1.3" when omitted. See the
4184 :ref:`ref-manual/kickstart:command: part or partition` chapter in
4185 :doc:`/ref-manual/kickstart` for details.
4186
3191 :term:`IMAGE_PKGTYPE` 4187 :term:`IMAGE_PKGTYPE`
3192 Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the 4188 Defines the package type (i.e. DEB, RPM or IPK) used by the
3193 OpenEmbedded build system. The variable is defined appropriately by 4189 OpenEmbedded build system. The variable is defined appropriately by
3194 the :ref:`package_deb <ref-classes-package_deb>`, 4190 one of the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`,
3195 :ref:`package_rpm <ref-classes-package_rpm>`, 4191 or :ref:`ref-classes-package_ipk` classes.
3196 :ref:`package_ipk <ref-classes-package_ipk>`, or
3197 :ref:`package_tar <ref-classes-package_tar>` class.
3198
3199 .. note::
3200
3201 The ``package_tar`` class is broken and is not supported. It is
3202 recommended that you do not use it.
3203 4192
3204 The :ref:`populate_sdk_* <ref-classes-populate-sdk-*>` and 4193 The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image`
3205 :ref:`image <ref-classes-image>` classes use the ``IMAGE_PKGTYPE`` 4194 classes use the :term:`IMAGE_PKGTYPE` for packaging images and SDKs.
3206 for packaging up images and SDKs.
3207 4195
3208 You should not set the ``IMAGE_PKGTYPE`` manually. Rather, the 4196 You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the
3209 variable is set indirectly through the appropriate 4197 variable is set indirectly through the appropriate
3210 :ref:`package_* <ref-classes-package>` class using the 4198 :ref:`package_* <ref-classes-package>` class using the
3211 :term:`PACKAGE_CLASSES` variable. The 4199 :term:`PACKAGE_CLASSES` variable. The
3212 OpenEmbedded build system uses the first package type (e.g. DEB, RPM, 4200 OpenEmbedded build system uses the first package type (e.g. DEB, RPM,
3213 or IPK) that appears with the variable 4201 or IPK) that appears with the variable
3214 4202
3215 .. note::
3216
3217 Files using the ``.tar`` format are never used as a substitute
3218 packaging format for DEB, RPM, and IPK formatted files for your image
3219 or SDK.
3220
3221 :term:`IMAGE_POSTPROCESS_COMMAND` 4203 :term:`IMAGE_POSTPROCESS_COMMAND`
3222 Specifies a list of functions to call once the OpenEmbedded build 4204 Specifies a list of functions to call once the OpenEmbedded build
3223 system creates the final image output files. You can specify 4205 system creates the final image output files. You can specify
3224 functions separated by semicolons: 4206 functions separated by spaces::
3225 ::
3226 4207
3227 IMAGE_POSTPROCESS_COMMAND += "function; ... " 4208 IMAGE_POSTPROCESS_COMMAND += "function"
3228 4209
3229 If you need to pass the root filesystem path to a command within the 4210 If you need to pass the root filesystem path to a command within the
3230 function, you can use ``${IMAGE_ROOTFS}``, which points to the 4211 function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -3235,10 +4216,9 @@ system and gives an overview of their function and contents.
3235 :term:`IMAGE_PREPROCESS_COMMAND` 4216 :term:`IMAGE_PREPROCESS_COMMAND`
3236 Specifies a list of functions to call before the OpenEmbedded build 4217 Specifies a list of functions to call before the OpenEmbedded build
3237 system creates the final image output files. You can specify 4218 system creates the final image output files. You can specify
3238 functions separated by semicolons: 4219 functions separated by spaces::
3239 ::
3240 4220
3241 IMAGE_PREPROCESS_COMMAND += "function; ... " 4221 IMAGE_PREPROCESS_COMMAND += "function"
3242 4222
3243 If you need to pass the root filesystem path to a command within the 4223 If you need to pass the root filesystem path to a command within the
3244 function, you can use ``${IMAGE_ROOTFS}``, which points to the 4224 function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -3262,22 +4242,50 @@ system and gives an overview of their function and contents.
3262 Defines additional free disk space created in the image in Kbytes. By 4242 Defines additional free disk space created in the image in Kbytes. By
3263 default, this variable is set to "0". This free disk space is added 4243 default, this variable is set to "0". This free disk space is added
3264 to the image after the build system determines the image size as 4244 to the image after the build system determines the image size as
3265 described in ``IMAGE_ROOTFS_SIZE``. 4245 described in :term:`IMAGE_ROOTFS_SIZE`.
3266 4246
3267 This variable is particularly useful when you want to ensure that a 4247 This variable is particularly useful when you want to ensure that a
3268 specific amount of free disk space is available on a device after an 4248 specific amount of free disk space is available on a device after an
3269 image is installed and running. For example, to be sure 5 Gbytes of 4249 image is installed and running. For example, to be sure 5 Gbytes of
3270 free disk space is available, set the variable as follows: 4250 free disk space is available, set the variable as follows::
3271 ::
3272 4251
3273 IMAGE_ROOTFS_EXTRA_SPACE = "5242880" 4252 IMAGE_ROOTFS_EXTRA_SPACE = "5242880"
3274 4253
3275 For example, the Yocto Project Build Appliance specifically requests 4254 For example, the Yocto Project Build Appliance specifically requests
3276 40 Gbytes of extra space with the line: 4255 40 Gbytes of extra space with the line::
3277 ::
3278 4256
3279 IMAGE_ROOTFS_EXTRA_SPACE = "41943040" 4257 IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
3280 4258
4259 :term:`IMAGE_ROOTFS_MAXSIZE`
4260 Defines the maximum allowed size of the generated image in kilobytes.
4261 The build will fail if the generated image size exceeds this value.
4262
4263 The generated image size undergoes several calculation steps before being
4264 compared to :term:`IMAGE_ROOTFS_MAXSIZE`.
4265 In the first step, the size of the directory pointed to by :term:`IMAGE_ROOTFS`
4266 is calculated.
4267 In the second step, the result from the first step is multiplied
4268 by :term:`IMAGE_OVERHEAD_FACTOR`.
4269 In the third step, the result from the second step is compared with
4270 :term:`IMAGE_ROOTFS_SIZE`. The larger value of these is added to
4271 :term:`IMAGE_ROOTFS_EXTRA_SPACE`.
4272 In the fourth step, the result from the third step is checked for
4273 a decimal part. If it has one, it is rounded up to the next integer.
4274 If it does not, it is simply converted into an integer.
4275 In the fifth step, the :term:`IMAGE_ROOTFS_ALIGNMENT` is added to the result
4276 from the fourth step and "1" is subtracted.
4277 In the sixth step, the remainder of the division between the result
4278 from the fifth step and :term:`IMAGE_ROOTFS_ALIGNMENT` is subtracted from the
4279 result of the fifth step. In this way, the result from the fourth step is
4280 rounded up to the nearest multiple of :term:`IMAGE_ROOTFS_ALIGNMENT`.
4281
4282 Thus, if the :term:`IMAGE_ROOTFS_MAXSIZE` is set, is compared with the result
4283 of the above calculations and is independent of the final image type.
4284 No default value is set for :term:`IMAGE_ROOTFS_MAXSIZE`.
4285
4286 It's a good idea to set this variable for images that need to fit on a limited
4287 space (e.g. SD card, a fixed-size partition, ...).
4288
3281 :term:`IMAGE_ROOTFS_SIZE` 4289 :term:`IMAGE_ROOTFS_SIZE`
3282 Defines the size in Kbytes for the generated image. The OpenEmbedded 4290 Defines the size in Kbytes for the generated image. The OpenEmbedded
3283 build system determines the final size for the generated image using 4291 build system determines the final size for the generated image using
@@ -3285,8 +4293,7 @@ system and gives an overview of their function and contents.
3285 the generated image, a requested size for the image, and requested 4293 the generated image, a requested size for the image, and requested
3286 additional free disk space to be added to the image. Programatically, 4294 additional free disk space to be added to the image. Programatically,
3287 the build system determines the final size of the generated image as 4295 the build system determines the final size of the generated image as
3288 follows: 4296 follows::
3289 ::
3290 4297
3291 if (image-du * overhead) < rootfs-size: 4298 if (image-du * overhead) < rootfs-size:
3292 internal-rootfs-size = rootfs-size + xspace 4299 internal-rootfs-size = rootfs-size + xspace
@@ -3305,10 +4312,9 @@ system and gives an overview of their function and contents.
3305 4312
3306 :term:`IMAGE_TYPEDEP` 4313 :term:`IMAGE_TYPEDEP`
3307 Specifies a dependency from one image type on another. Here is an 4314 Specifies a dependency from one image type on another. Here is an
3308 example from the :ref:`image-live <ref-classes-image-live>` class: 4315 example from the :ref:`ref-classes-image-live` class::
3309 ::
3310 4316
3311 IMAGE_TYPEDEP_live = "ext3" 4317 IMAGE_TYPEDEP:live = "ext3"
3312 4318
3313 In the previous example, the variable ensures that when "live" is 4319 In the previous example, the variable ensures that when "live" is
3314 listed with the :term:`IMAGE_FSTYPES` variable, 4320 listed with the :term:`IMAGE_FSTYPES` variable,
@@ -3327,6 +4333,9 @@ system and gives an overview of their function and contents.
3327 - cpio.lzma 4333 - cpio.lzma
3328 - cpio.xz 4334 - cpio.xz
3329 - cramfs 4335 - cramfs
4336 - erofs
4337 - erofs-lz4
4338 - erofs-lz4hc
3330 - ext2 4339 - ext2
3331 - ext2.bz2 4340 - ext2.bz2
3332 - ext2.gz 4341 - ext2.gz
@@ -3357,9 +4366,10 @@ system and gives an overview of their function and contents.
3357 - wic.bz2 4366 - wic.bz2
3358 - wic.gz 4367 - wic.gz
3359 - wic.lzma 4368 - wic.lzma
4369 - wic.zst
3360 4370
3361 For more information about these types of images, see 4371 For more information about these types of images, see
3362 ``meta/classes/image_types*.bbclass`` in the :term:`Source Directory`. 4372 ``meta/classes-recipe/image_types*.bbclass`` in the :term:`Source Directory`.
3363 4373
3364 :term:`IMAGE_VERSION_SUFFIX` 4374 :term:`IMAGE_VERSION_SUFFIX`
3365 Version suffix that is part of the default :term:`IMAGE_NAME` and 4375 Version suffix that is part of the default :term:`IMAGE_NAME` and
@@ -3369,99 +4379,113 @@ system and gives an overview of their function and contents.
3369 desired, and this suffix would then be used consistently across 4379 desired, and this suffix would then be used consistently across
3370 the build artifacts. 4380 the build artifacts.
3371 4381
3372 :term:`INC_PR` 4382 :term:`IMGDEPLOYDIR`
3373 Helps define the recipe revision for recipes that share a common 4383 When inheriting the :ref:`ref-classes-image` class directly or
3374 ``include`` file. You can think of this variable as part of the 4384 through the :ref:`ref-classes-core-image` class, the
3375 recipe revision as set from within an include file. 4385 :term:`IMGDEPLOYDIR` points to a temporary work area for deployed files
3376 4386 that is set in the ``image`` class as follows::
3377 Suppose, for example, you have a set of recipes that are used across
3378 several projects. And, within each of those recipes the revision (its
3379 :term:`PR` value) is set accordingly. In this case, when
3380 the revision of those recipes changes, the burden is on you to find
3381 all those recipes and be sure that they get changed to reflect the
3382 updated version of the recipe. In this scenario, it can get
3383 complicated when recipes that are used in many places and provide
3384 common functionality are upgraded to a new revision.
3385
3386 A more efficient way of dealing with this situation is to set the
3387 ``INC_PR`` variable inside the ``include`` files that the recipes
3388 share and then expand the ``INC_PR`` variable within the recipes to
3389 help define the recipe revision.
3390
3391 The following provides an example that shows how to use the
3392 ``INC_PR`` variable given a common ``include`` file that defines the
3393 variable. Once the variable is defined in the ``include`` file, you
3394 can use the variable to set the ``PR`` values in each recipe. You
3395 will notice that when you set a recipe's ``PR`` you can provide more
3396 granular revisioning by appending values to the ``INC_PR`` variable:
3397 ::
3398
3399 recipes-graphics/xorg-font/xorg-font-common.inc:INC_PR = "r2"
3400 recipes-graphics/xorg-font/encodings_1.0.4.bb:PR = "${INC_PR}.1"
3401 recipes-graphics/xorg-font/font-util_1.3.0.bb:PR = "${INC_PR}.0"
3402 recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
3403 4387
3404 The 4388 IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete"
3405 first line of the example establishes the baseline revision to be 4389
3406 used for all recipes that use the ``include`` file. The remaining 4390 Recipes inheriting the :ref:`ref-classes-image` class should copy
3407 lines in the example are from individual recipes and show how the 4391 files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take
3408 ``PR`` value is set. 4392 care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards.
4393
4394 :term:`IMGMANIFESTDIR`
4395 When inheriting the :ref:`ref-classes-image` class directly or through the
4396 :ref:`ref-classes-core-image` class, the :term:`IMGMANIFESTDIR` setting
4397 points to a temporary area that stores manifest ``json`` files, that list
4398 what images were created by various images creation tasks (as defined by
4399 the :term:`IMAGE_FSTYPES` variable). It is set in the
4400 :ref:`ref-classes-image` class as follows::
4401
4402 IMGMANIFESTDIR = "${WORKDIR}/image-task-manifest"
3409 4403
3410 :term:`INCOMPATIBLE_LICENSE` 4404 :term:`INCOMPATIBLE_LICENSE`
3411 Specifies a space-separated list of license names (as they would 4405 Specifies a space-separated list of license names (as they would
3412 appear in :term:`LICENSE`) that should be excluded 4406 appear in :term:`LICENSE`) that should be excluded
3413 from the build. Recipes that provide no alternatives to listed 4407 from the build (if set globally), or from an image (if set locally
4408 in an image recipe).
4409
4410 When the variable is set globally, recipes that provide no alternatives to listed
3414 incompatible licenses are not built. Packages that are individually 4411 incompatible licenses are not built. Packages that are individually
3415 licensed with the specified incompatible licenses will be deleted. 4412 licensed with the specified incompatible licenses will be deleted.
4413 Most of the time this does not allow a feasible build (because it becomes impossible
4414 to satisfy build time dependencies), so the recommended way to
4415 implement license restrictions is to set the variable in specific
4416 image recipes where the restrictions must apply. That way there
4417 are no build time restrictions, but the license check is still
4418 performed when the image's filesystem is assembled from packages.
4419
4420 There is some support for wildcards in this variable's value,
4421 however it is restricted to specific licenses. Currently only
4422 these wildcards are allowed and expand as follows:
4423
4424 - ``AGPL-3.0*"``: ``AGPL-3.0-only``, ``AGPL-3.0-or-later``
4425 - ``GPL-3.0*``: ``GPL-3.0-only``, ``GPL-3.0-or-later``
4426 - ``LGPL-3.0*``: ``LGPL-3.0-only``, ``LGPL-3.0-or-later``
3416 4427
3417 .. note:: 4428 .. note::
3418 4429
3419 This functionality is only regularly tested using the following 4430 This functionality is only regularly tested using the following
3420 setting: 4431 setting::
3421 ::
3422 4432
3423 INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0" 4433 INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0* AGPL-3.0*"
3424 4434
3425 4435
3426 Although you can use other settings, you might be required to 4436 Although you can use other settings, you might be required to
3427 remove dependencies on or provide alternatives to components that 4437 remove dependencies on (or provide alternatives to) components that
3428 are required to produce a functional system image. 4438 are required to produce a functional system image.
3429 4439
3430 .. note:: 4440 :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS`
4441 Specifies a space-separated list of package and license pairs that
4442 are allowed to be used even if the license is specified in
4443 :term:`INCOMPATIBLE_LICENSE`. The package and license pairs are
4444 separated using a colon. Example::
3431 4445
3432 It is possible to define a list of licenses that are allowed to be 4446 INCOMPATIBLE_LICENSE_EXCEPTIONS = "gdbserver:GPL-3.0-only gdbserver:LGPL-3.0-only"
3433 used instead of the licenses that are excluded. To do this, define
3434 a variable ``COMPATIBLE_LICENSES`` with the names of the licences
3435 that are allowed. Then define ``INCOMPATIBLE_LICENSE`` as:
3436 ::
3437
3438 INCOMPATIBLE_LICENSE = "${@' '.join(sorted(set(d.getVar('AVAILABLE_LICENSES').split()) - set(d.getVar('COMPATIBLE_LICENSES').split())))}"
3439
3440
3441 This will result in ``INCOMPATIBLE_LICENSE`` containing the names of
3442 all licences from :term:`AVAILABLE_LICENSES` except the ones specified
3443 in ``COMPATIBLE_LICENSES`` , thus only allowing the latter licences to
3444 be used.
3445 4447
3446 :term:`INHERIT` 4448 :term:`INHERIT`
3447 Causes the named class or classes to be inherited globally. Anonymous 4449 Causes the named class or classes to be inherited globally. Anonymous
3448 functions in the class or classes are not executed for the base 4450 functions in the class or classes are not executed for the base
3449 configuration and in each individual recipe. The OpenEmbedded build 4451 configuration and in each individual recipe. The OpenEmbedded build
3450 system ignores changes to ``INHERIT`` in individual recipes. 4452 system ignores changes to :term:`INHERIT` in individual recipes.
4453 Classes inherited using :term:`INHERIT` must be located in the
4454 ``classes-global/`` or ``classes/`` subdirectories.
3451 4455
3452 For more information on ``INHERIT``, see the 4456 For more information on :term:`INHERIT`, see the
3453 :ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`" 4457 :ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`"
3454 section in the Bitbake User Manual. 4458 section in the BitBake User Manual.
3455 4459
3456 :term:`INHERIT_DISTRO` 4460 :term:`INHERIT_DISTRO`
3457 Lists classes that will be inherited at the distribution level. It is 4461 Lists classes that will be inherited at the distribution level. It is
3458 unlikely that you want to edit this variable. 4462 unlikely that you want to edit this variable.
3459 4463
4464 Classes specified in :term:`INHERIT_DISTRO` must be located in the
4465 ``classes-global/`` or ``classes/`` subdirectories.
4466
3460 The default value of the variable is set as follows in the 4467 The default value of the variable is set as follows in the
3461 ``meta/conf/distro/defaultsetup.conf`` file: 4468 ``meta/conf/distro/defaultsetup.conf`` file::
3462 ::
3463 4469
3464 INHERIT_DISTRO ?= "debian devshell sstate license" 4470 INHERIT_DISTRO ?= "debian devshell sstate license remove-libtool create-spdx"
4471
4472 :term:`INHIBIT_AUTOTOOLS_DEPS`
4473 Prevents the :ref:`ref-classes-autotools` class from automatically adding
4474 its default build-time dependencies.
4475
4476 When a recipe inherits the :ref:`ref-classes-autotools` class, several
4477 native cross tools such as ``autoconf-native``, ``automake-native``,
4478 ``libtool-native``, ``libtool-cross`` are added to :term:`DEPENDS` to
4479 support the ``autotools`` build process.
4480
4481 To prevent the build system from adding these dependencies automatically,
4482 set the :term:`INHIBIT_AUTOTOOLS_DEPS` variable as follows::
4483
4484 INHIBIT_AUTOTOOLS_DEPS = "1"
4485
4486 By default, the value of :term:`INHIBIT_AUTOTOOLS_DEPS` is empty. Setting
4487 it to "0" does not disable inhibition. Only the empty string will disable
4488 inhibition.
3465 4489
3466 :term:`INHIBIT_DEFAULT_DEPS` 4490 :term:`INHIBIT_DEFAULT_DEPS`
3467 Prevents the default dependencies, namely the C compiler and standard 4491 Prevents the default dependencies, namely the C compiler and standard
@@ -3472,6 +4496,23 @@ system and gives an overview of their function and contents.
3472 Set the variable to "1" to prevent the default dependencies from 4496 Set the variable to "1" to prevent the default dependencies from
3473 being added. 4497 being added.
3474 4498
4499 :term:`INHIBIT_DEFAULT_RUST_DEPS`
4500 Prevents the :ref:`ref-classes-rust` class from automatically adding
4501 its default build-time dependencies.
4502
4503 When a recipe inherits the :ref:`ref-classes-rust` class, several
4504 tools such as ``rust-native`` and ``${RUSTLIB_DEP}`` (only added when cross-compiling) are added
4505 to :term:`DEPENDS` to support the ``rust`` build process.
4506
4507 To prevent the build system from adding these dependencies automatically,
4508 set the :term:`INHIBIT_DEFAULT_RUST_DEPS` variable as follows::
4509
4510 INHIBIT_DEFAULT_RUST_DEPS = "1"
4511
4512 By default, the value of :term:`INHIBIT_DEFAULT_RUST_DEPS` is empty. Setting
4513 it to "0" does not disable inhibition. Only the empty string will disable
4514 inhibition.
4515
3475 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` 4516 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT`
3476 Prevents the OpenEmbedded build system from splitting out debug 4517 Prevents the OpenEmbedded build system from splitting out debug
3477 information during packaging. By default, the build system splits out 4518 information during packaging. By default, the build system splits out
@@ -3482,9 +4523,8 @@ system and gives an overview of their function and contents.
3482 variable. 4523 variable.
3483 4524
3484 To prevent the build system from splitting out debug information 4525 To prevent the build system from splitting out debug information
3485 during packaging, set the ``INHIBIT_PACKAGE_DEBUG_SPLIT`` variable as 4526 during packaging, set the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable as
3486 follows: 4527 follows::
3487 ::
3488 4528
3489 INHIBIT_PACKAGE_DEBUG_SPLIT = "1" 4529 INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
3490 4530
@@ -3495,7 +4535,7 @@ system and gives an overview of their function and contents.
3495 4535
3496 By default, the OpenEmbedded build system strips binaries and puts 4536 By default, the OpenEmbedded build system strips binaries and puts
3497 the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``. 4537 the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``.
3498 Consequently, you should not set ``INHIBIT_PACKAGE_STRIP`` when you 4538 Consequently, you should not set :term:`INHIBIT_PACKAGE_STRIP` when you
3499 plan to debug in general. 4539 plan to debug in general.
3500 4540
3501 :term:`INHIBIT_SYSROOT_STRIP` 4541 :term:`INHIBIT_SYSROOT_STRIP`
@@ -3504,46 +4544,99 @@ system and gives an overview of their function and contents.
3504 4544
3505 By default, the OpenEmbedded build system strips binaries in the 4545 By default, the OpenEmbedded build system strips binaries in the
3506 resulting sysroot. When you specifically set the 4546 resulting sysroot. When you specifically set the
3507 ``INHIBIT_SYSROOT_STRIP`` variable to "1" in your recipe, you inhibit 4547 :term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit
3508 this stripping. 4548 this stripping.
3509 4549
3510 If you want to use this variable, include the 4550 If you want to use this variable, include the :ref:`ref-classes-staging`
3511 :ref:`staging <ref-classes-staging>` class. This class uses a 4551 class. This class uses a ``sys_strip()`` function to test for the variable
3512 ``sys_strip()`` function to test for the variable and acts 4552 and acts accordingly.
3513 accordingly.
3514 4553
3515 .. note:: 4554 .. note::
3516 4555
3517 Use of the ``INHIBIT_SYSROOT_STRIP`` variable occurs in rare and 4556 Use of the :term:`INHIBIT_SYSROOT_STRIP` variable occurs in rare and
3518 special circumstances. For example, suppose you are building 4557 special circumstances. For example, suppose you are building
3519 bare-metal firmware by using an external GCC toolchain. Furthermore, 4558 bare-metal firmware by using an external GCC toolchain. Furthermore,
3520 even if the toolchain's binaries are strippable, other files exist 4559 even if the toolchain's binaries are strippable, there are other files
3521 that are needed for the build that are not strippable. 4560 needed for the build that are not strippable.
4561
4562 :term:`INHIBIT_UPDATERCD_BBCLASS`
4563 Prevents the :ref:`ref-classes-update-rc.d` class from automatically
4564 installing and registering SysV init scripts for packages.
4565
4566 When a recipe inherits the :ref:`ref-classes-update-rc.d` class, init
4567 scripts are typically installed and registered for the packages listed in
4568 :term:`INITSCRIPT_PACKAGES`. This ensures that the relevant
4569 services are started and stopped at the appropriate runlevels using the
4570 traditional SysV init system.
4571
4572 To prevent the build system from adding these scripts and configurations
4573 automatically, set the :term:`INHIBIT_UPDATERCD_BBCLASS` variable as follows::
4574
4575 INHIBIT_UPDATERCD_BBCLASS = "1"
4576
4577 By default, the value of :term:`INHIBIT_UPDATERCD_BBCLASS` is empty. Setting
4578 it to "0" does not disable inhibition. Only the empty string will disable
4579 inhibition.
4580
4581 :term:`INIT_MANAGER`
4582 Specifies the system init manager to use. Available options are:
4583
4584 - ``sysvinit``
4585 - ``systemd``
4586 - ``mdev-busybox``
4587
4588 With ``sysvinit``, the init manager is set to
4589 :wikipedia:`SysVinit <Init#SysV-style>`, the traditional UNIX init
4590 system. This is the default choice in the Poky distribution, together with
4591 the Udev device manager (see the ":ref:`device-manager`" section).
4592
4593 With ``systemd``, the init manager becomes :wikipedia:`systemd <Systemd>`,
4594 which comes with the :wikipedia:`udev <Udev>` device manager.
4595
4596 With ``mdev-busybox``, the init manager becomes the much simpler BusyBox
4597 init, together with the BusyBox mdev device manager. This is the simplest
4598 and lightest solution, and probably the best choice for low-end systems
4599 with a rather slow CPU and a limited amount of RAM.
4600
4601 More concretely, this is used to include
4602 ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global
4603 configuration. You can have a look at the
4604 :yocto_git:`meta/conf/distro/include/init-manager-*.inc </poky/tree/meta/conf/distro/include>`
4605 files for more information, and also the ":ref:`init-manager`"
4606 section in the Yocto Project Development Tasks Manual.
4607
4608 :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
4609 Indicates the deploy directory used by :ref:`ref-tasks-bundle_initramfs`
4610 where the :term:`INITRAMFS_IMAGE` will be fetched from. This variable is
4611 set by default to ``${DEPLOY_DIR_IMAGE}`` in the
4612 :ref:`ref-classes-kernel` class and it's only meant to be changed when
4613 building an :term:`Initramfs` image from a separate multiconfig via
4614 :term:`INITRAMFS_MULTICONFIG`.
3522 4615
3523 :term:`INITRAMFS_FSTYPES` 4616 :term:`INITRAMFS_FSTYPES`
3524 Defines the format for the output image of an initial RAM filesystem 4617 Defines the format for the output image of an initial RAM filesystem
3525 (initramfs), which is used during boot. Supported formats are the 4618 (:term:`Initramfs`), which is used during boot. Supported formats are the
3526 same as those supported by the 4619 same as those supported by the
3527 :term:`IMAGE_FSTYPES` variable. 4620 :term:`IMAGE_FSTYPES` variable.
3528 4621
3529 The default value of this variable, which is set in the 4622 The default value of this variable, which is set in the
3530 ``meta/conf/bitbake.conf`` configuration file in the 4623 ``meta/conf/bitbake.conf`` configuration file in the
3531 :term:`Source Directory`, is "cpio.gz". The Linux kernel's 4624 :term:`Source Directory`, is "cpio.gz". The Linux kernel's
3532 initramfs mechanism, as opposed to the initial RAM filesystem 4625 :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem
3533 `initrd <https://en.wikipedia.org/wiki/Initrd>`__ mechanism, expects 4626 :wikipedia:`initrd <Initrd>` mechanism, expects
3534 an optionally compressed cpio archive. 4627 an optionally compressed cpio archive.
3535 4628
3536 :term:`INITRAMFS_IMAGE` 4629 :term:`INITRAMFS_IMAGE`
3537 Specifies the :term:`PROVIDES` name of an image 4630 Specifies the :term:`PROVIDES` name of an image
3538 recipe that is used to build an initial RAM filesystem (initramfs) 4631 recipe that is used to build an initial RAM filesystem (:term:`Initramfs`)
3539 image. In other words, the ``INITRAMFS_IMAGE`` variable causes an 4632 image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an
3540 additional recipe to be built as a dependency to whatever root 4633 additional recipe to be built as a dependency to whatever root
3541 filesystem recipe you might be using (e.g. ``core-image-sato``). The 4634 filesystem recipe you might be using (e.g. ``core-image-sato``). The
3542 initramfs image recipe you provide should set 4635 :term:`Initramfs` image recipe you provide should set
3543 :term:`IMAGE_FSTYPES` to 4636 :term:`IMAGE_FSTYPES` to
3544 :term:`INITRAMFS_FSTYPES`. 4637 :term:`INITRAMFS_FSTYPES`.
3545 4638
3546 An initramfs image provides a temporary root filesystem used for 4639 An :term:`Initramfs` image provides a temporary root filesystem used for
3547 early system initialization (e.g. loading of modules needed to locate 4640 early system initialization (e.g. loading of modules needed to locate
3548 and mount the "real" root filesystem). 4641 and mount the "real" root filesystem).
3549 4642
@@ -3551,24 +4644,24 @@ system and gives an overview of their function and contents.
3551 4644
3552 See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb`` 4645 See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb``
3553 recipe in the :term:`Source Directory` 4646 recipe in the :term:`Source Directory`
3554 for an example initramfs recipe. To select this sample recipe as 4647 for an example :term:`Initramfs` recipe. To select this sample recipe as
3555 the one built to provide the initramfs image, set ``INITRAMFS_IMAGE`` 4648 the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE`
3556 to "core-image-minimal-initramfs". 4649 to "core-image-minimal-initramfs".
3557 4650
3558 You can also find more information by referencing the 4651 You can also find more information by referencing the
3559 ``meta-poky/conf/local.conf.sample.extended`` configuration file in 4652 ``meta-poky/conf/templates/default/local.conf.sample.extended``
3560 the Source Directory, the :ref:`image <ref-classes-image>` class, 4653 configuration file in the Source Directory, the :ref:`ref-classes-image`
3561 and the :ref:`kernel <ref-classes-kernel>` class to see how to use 4654 class, and the :ref:`ref-classes-kernel` class to see how to use the
3562 the ``INITRAMFS_IMAGE`` variable. 4655 :term:`INITRAMFS_IMAGE` variable.
3563 4656
3564 If ``INITRAMFS_IMAGE`` is empty, which is the default, then no 4657 If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no
3565 initramfs image is built. 4658 :term:`Initramfs` image is built.
3566 4659
3567 For more information, you can also see the 4660 For more information, you can also see the
3568 :term:`INITRAMFS_IMAGE_BUNDLE` 4661 :term:`INITRAMFS_IMAGE_BUNDLE`
3569 variable, which allows the generated image to be bundled inside the 4662 variable, which allows the generated image to be bundled inside the
3570 kernel image. Additionally, for information on creating an initramfs 4663 kernel image. Additionally, for information on creating an :term:`Initramfs`
3571 image, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 4664 image, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
3572 in the Yocto Project Development Tasks Manual. 4665 in the Yocto Project Development Tasks Manual.
3573 4666
3574 :term:`INITRAMFS_IMAGE_BUNDLE` 4667 :term:`INITRAMFS_IMAGE_BUNDLE`
@@ -3577,102 +4670,135 @@ system and gives an overview of their function and contents.
3577 extra pass 4670 extra pass
3578 (:ref:`ref-tasks-bundle_initramfs`) during 4671 (:ref:`ref-tasks-bundle_initramfs`) during
3579 kernel compilation in order to build a single binary that contains 4672 kernel compilation in order to build a single binary that contains
3580 both the kernel image and the initial RAM filesystem (initramfs) 4673 both the kernel image and the initial RAM filesystem (:term:`Initramfs`)
3581 image. This makes use of the 4674 image. This makes use of the
3582 :term:`CONFIG_INITRAMFS_SOURCE` kernel 4675 :term:`CONFIG_INITRAMFS_SOURCE` kernel
3583 feature. 4676 feature.
3584 4677
3585 .. note:: 4678 .. note::
3586 4679
3587 Using an extra compilation pass to bundle the initramfs avoids a 4680 Bundling the :term:`Initramfs` with the kernel conflates the code in the
3588 circular dependency between the kernel recipe and the initramfs 4681 :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2
3589 recipe should the initramfs include kernel modules. Should that be 4682 compatible software may be part of a bundled :term:`Initramfs`.
3590 the case, the initramfs recipe depends on the kernel for the 4683
3591 kernel modules, and the kernel depends on the initramfs recipe 4684 .. note::
3592 since the initramfs is bundled inside the kernel image. 4685
4686 Using an extra compilation pass to bundle the :term:`Initramfs` avoids a
4687 circular dependency between the kernel recipe and the :term:`Initramfs`
4688 recipe should the :term:`Initramfs` include kernel modules. Should that be
4689 the case, the :term:`Initramfs` recipe depends on the kernel for the
4690 kernel modules, and the kernel depends on the :term:`Initramfs` recipe
4691 since the :term:`Initramfs` is bundled inside the kernel image.
3593 4692
3594 The combined binary is deposited into the ``tmp/deploy`` directory, 4693 The combined binary is deposited into the ``tmp/deploy`` directory,
3595 which is part of the :term:`Build Directory`. 4694 which is part of the :term:`Build Directory`.
3596 4695
3597 Setting the variable to "1" in a configuration file causes the 4696 Setting the variable to "1" in a configuration file causes the
3598 OpenEmbedded build system to generate a kernel image with the 4697 OpenEmbedded build system to generate a kernel image with the
3599 initramfs specified in ``INITRAMFS_IMAGE`` bundled within: 4698 :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within::
3600 ::
3601 4699
3602 INITRAMFS_IMAGE_BUNDLE = "1" 4700 INITRAMFS_IMAGE_BUNDLE = "1"
3603 4701
3604 By default, the 4702 By default, the :ref:`ref-classes-kernel` class sets this variable to a
3605 :ref:`kernel <ref-classes-kernel>` class sets this variable to a 4703 null string as follows::
3606 null string as follows:
3607 ::
3608 4704
3609 INITRAMFS_IMAGE_BUNDLE ?= "" 4705 INITRAMFS_IMAGE_BUNDLE ?= ""
3610 4706
3611 .. note:: 4707 .. note::
3612 4708
3613 You must set the ``INITRAMFS_IMAGE_BUNDLE`` variable in a 4709 You must set the :term:`INITRAMFS_IMAGE_BUNDLE` variable in a
3614 configuration file. You cannot set the variable in a recipe file. 4710 configuration file. You cannot set the variable in a recipe file.
3615 4711
3616 See the 4712 See the
3617 :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/local.conf.sample.extended>` 4713 :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>`
3618 file for additional information. Also, for information on creating an 4714 file for additional information. Also, for information on creating an
3619 initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 4715 :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
3620 in the Yocto Project Development Tasks Manual. 4716 in the Yocto Project Development Tasks Manual.
3621 4717
4718 :term:`INITRAMFS_IMAGE_NAME`
4719
4720 This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with
4721 :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value
4722 is set as follows:
4723
4724 INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}"
4725
4726 That is, if :term:`INITRAMFS_IMAGE` is set, the value of
4727 :term:`INITRAMFS_IMAGE_NAME` will be set based upon
4728 :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`.
4729
4730
3622 :term:`INITRAMFS_LINK_NAME` 4731 :term:`INITRAMFS_LINK_NAME`
3623 The link name of the initial RAM filesystem image. This variable is 4732 The link name of the initial RAM filesystem image. This variable is
3624 set in the ``meta/classes/kernel-artifact-names.bbclass`` file as 4733 set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
3625 follows: 4734 follows::
3626 ::
3627 4735
3628 INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}" 4736 INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
3629 4737
3630 The value of the 4738 The value of the
3631 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 4739 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
3632 file, has the following value: 4740 file, has the following value::
3633 ::
3634 4741
3635 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4742 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
3636 4743
3637 See the :term:`MACHINE` variable for additional 4744 See the :term:`MACHINE` variable for additional
3638 information. 4745 information.
3639 4746
4747 :term:`INITRAMFS_MAXSIZE`
4748 Defines the maximum allowed size of the :term:`Initramfs` image in Kbytes.
4749 The build will fail if the :term:`Initramfs` image size exceeds this value.
4750
4751 The :term:`Initramfs` image size undergoes several calculation steps before
4752 being compared to :term:`INITRAMFS_MAXSIZE`.
4753 These steps are the same as those used for :term:`IMAGE_ROOTFS_MAXSIZE`
4754 and are described in detail in that entry.
4755
4756 Thus, :term:`INITRAMFS_MAXSIZE` is compared with the result of the calculations
4757 and is independent of the final image type (e.g. compressed).
4758 A default value for :term:`INITRAMFS_MAXSIZE` is set in
4759 :oe_git:`meta/conf/bitbake.conf </openembedded-core/tree/meta/conf/bitbake.conf>`.
4760
4761 :term:`INITRAMFS_MULTICONFIG`
4762 Defines the multiconfig to create a multiconfig dependency to be used by
4763 the :ref:`ref-classes-kernel` class.
4764
4765 This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from
4766 a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`.
4767
4768 For more information on how to bundle an :term:`Initramfs` image from a separate
4769 multiconfig see the ":ref:`dev-manual/building:Bundling an Initramfs Image From a Separate Multiconfig`"
4770 section in the Yocto Project Development Tasks Manual.
4771
3640 :term:`INITRAMFS_NAME` 4772 :term:`INITRAMFS_NAME`
3641 The base name of the initial RAM filesystem image. This variable is 4773 The base name of the initial RAM filesystem image. This variable is
3642 set in the ``meta/classes/kernel-artifact-names.bbclass`` file as 4774 set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
3643 follows: 4775 follows::
3644 ::
3645 4776
3646 INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}" 4777 INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
3647 4778
3648 The value of the :term:`KERNEL_ARTIFACT_NAME` 4779 See :term:`KERNEL_ARTIFACT_NAME` for additional information.
3649 variable, which is set in the same file, has the following value:
3650 ::
3651
3652 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
3653 4780
3654 :term:`INITRD` 4781 :term:`INITRD`
3655 Indicates list of filesystem images to concatenate and use as an 4782 Indicates list of filesystem images to concatenate and use as an
3656 initial RAM disk (``initrd``). 4783 initial RAM disk (``initrd``).
3657 4784
3658 The ``INITRD`` variable is an optional variable used with the 4785 The :term:`INITRD` variable is an optional variable used with the
3659 :ref:`image-live <ref-classes-image-live>` class. 4786 :ref:`ref-classes-image-live` class.
3660 4787
3661 :term:`INITRD_IMAGE` 4788 :term:`INITRD_IMAGE`
3662 When building a "live" bootable image (i.e. when 4789 When building a "live" bootable image (i.e. when
3663 :term:`IMAGE_FSTYPES` contains "live"), 4790 :term:`IMAGE_FSTYPES` contains "live"),
3664 ``INITRD_IMAGE`` specifies the image recipe that should be built to 4791 :term:`INITRD_IMAGE` specifies the image recipe that should be built to
3665 provide the initial RAM disk image. The default value is 4792 provide the initial RAM disk image. The default value is
3666 "core-image-minimal-initramfs". 4793 "core-image-minimal-initramfs".
3667 4794
3668 See the :ref:`image-live <ref-classes-image-live>` class for more 4795 See the :ref:`ref-classes-image-live` class for more information.
3669 information.
3670 4796
3671 :term:`INITSCRIPT_NAME` 4797 :term:`INITSCRIPT_NAME`
3672 The filename of the initialization script as installed to 4798 The filename of the initialization script as installed to
3673 ``${sysconfdir}/init.d``. 4799 ``${sysconfdir}/init.d``.
3674 4800
3675 This variable is used in recipes when using ``update-rc.d.bbclass``. 4801 This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
3676 The variable is mandatory. 4802 The variable is mandatory.
3677 4803
3678 :term:`INITSCRIPT_PACKAGES` 4804 :term:`INITSCRIPT_PACKAGES`
@@ -3680,13 +4806,12 @@ system and gives an overview of their function and contents.
3680 are specified, you need to append the package name to the other 4806 are specified, you need to append the package name to the other
3681 ``INITSCRIPT_*`` as an override. 4807 ``INITSCRIPT_*`` as an override.
3682 4808
3683 This variable is used in recipes when using ``update-rc.d.bbclass``. 4809 This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
3684 The variable is optional and defaults to the :term:`PN` 4810 The variable is optional and defaults to the :term:`PN`
3685 variable. 4811 variable.
3686 4812
3687 :term:`INITSCRIPT_PARAMS` 4813 :term:`INITSCRIPT_PARAMS`
3688 Specifies the options to pass to ``update-rc.d``. Here is an example: 4814 Specifies the options to pass to ``update-rc.d``. Here is an example::
3689 ::
3690 4815
3691 INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ." 4816 INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
3692 4817
@@ -3694,29 +4819,27 @@ system and gives an overview of their function and contents.
3694 in initlevels 2 and 5, and stops the script in levels 0, 1 and 6. 4819 in initlevels 2 and 5, and stops the script in levels 0, 1 and 6.
3695 4820
3696 The variable's default value is "defaults", which is set in the 4821 The variable's default value is "defaults", which is set in the
3697 :ref:`update-rc.d <ref-classes-update-rc.d>` class. 4822 :ref:`ref-classes-update-rc.d` class.
3698 4823
3699 The value in ``INITSCRIPT_PARAMS`` is passed through to the 4824 The value in :term:`INITSCRIPT_PARAMS` is passed through to the
3700 ``update-rc.d`` command. For more information on valid parameters, 4825 ``update-rc.d`` command. For more information on valid parameters,
3701 please see the ``update-rc.d`` manual page at 4826 please see the manual page: :manpage:`update-rc.d <update-rc.d(8)>`.
3702 https://manpages.debian.org/buster/init-system-helpers/update-rc.d.8.en.html
3703 4827
3704 :term:`INSANE_SKIP` 4828 :term:`INSANE_SKIP`
3705 Specifies the QA checks to skip for a specific package within a 4829 Specifies the QA checks to skip for a specific package within a
3706 recipe. For example, to skip the check for symbolic link ``.so`` 4830 recipe. For example, to skip the check for symbolic link ``.so``
3707 files in the main package of a recipe, add the following to the 4831 files in the main package of a recipe, add the following to the
3708 recipe. The package name override must be used, which in this example 4832 recipe. The package name override must be used, which in this example
3709 is ``${PN}``: 4833 is ``${PN}``::
3710 ::
3711 4834
3712 INSANE_SKIP_${PN} += "dev-so" 4835 INSANE_SKIP:${PN} += "dev-so"
3713 4836
3714 See the ":ref:`insane.bbclass <ref-classes-insane>`" section for a 4837 See the ":ref:`ref-classes-insane`" section for a
3715 list of the valid QA checks you can specify using this variable. 4838 list of the valid QA checks you can specify using this variable.
3716 4839
3717 :term:`INSTALL_TIMEZONE_FILE` 4840 :term:`INSTALL_TIMEZONE_FILE`
3718 By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file. 4841 By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file.
3719 Set the ``INSTALL_TIMEZONE_FILE`` variable to "0" at the 4842 Set the :term:`INSTALL_TIMEZONE_FILE` variable to "0" at the
3720 configuration level to disable this behavior. 4843 configuration level to disable this behavior.
3721 4844
3722 :term:`IPK_FEED_URIS` 4845 :term:`IPK_FEED_URIS`
@@ -3737,7 +4860,7 @@ system and gives an overview of their function and contents.
3737 - qemu 4860 - qemu
3738 - mips 4861 - mips
3739 4862
3740 You define the ``KARCH`` variable in the :ref:`kernel-dev/advanced:bsp descriptions`. 4863 You define the :term:`KARCH` variable in the :ref:`kernel-dev/advanced:bsp descriptions`.
3741 4864
3742 :term:`KBRANCH` 4865 :term:`KBRANCH`
3743 A regular expression used by the build process to explicitly identify 4866 A regular expression used by the build process to explicitly identify
@@ -3748,34 +4871,31 @@ system and gives an overview of their function and contents.
3748 Values for this variable are set in the kernel's recipe file and the 4871 Values for this variable are set in the kernel's recipe file and the
3749 kernel's append file. For example, if you are using the 4872 kernel's append file. For example, if you are using the
3750 ``linux-yocto_4.12`` kernel, the kernel recipe file is the 4873 ``linux-yocto_4.12`` kernel, the kernel recipe file is the
3751 ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. ``KBRANCH`` 4874 ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. :term:`KBRANCH`
3752 is set as follows in that kernel recipe file: 4875 is set as follows in that kernel recipe file::
3753 ::
3754 4876
3755 KBRANCH ?= "standard/base" 4877 KBRANCH ?= "standard/base"
3756 4878
3757 This variable is also used from the kernel's append file to identify 4879 This variable is also used from the kernel's append file to identify
3758 the kernel branch specific to a particular machine or target 4880 the kernel branch specific to a particular machine or target
3759 hardware. Continuing with the previous kernel example, the kernel's 4881 hardware. Continuing with the previous kernel example, the kernel's
3760 append file (i.e. ``linux-yocto_4.12.bbappend``) is located in the 4882 append file is located in the
3761 BSP layer for a given machine. For example, the append file for the 4883 BSP layer for a given machine. For example, the append file for the
3762 Beaglebone, EdgeRouter, and generic versions of both 32 and 64-bit IA 4884 Beaglebone and generic versions of both 32 and 64-bit IA
3763 machines (``meta-yocto-bsp``) is named 4885 machines (``meta-yocto-bsp``) is named
3764 ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend``. 4886 ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.1.bbappend``.
3765 Here are the related statements from that append file: 4887 Here are the related statements from that append file::
3766 ::
3767 4888
3768 KBRANCH_genericx86 = "standard/base" 4889 KBRANCH:genericx86 = "v6.1/standard/base"
3769 KBRANCH_genericx86-64 = "standard/base" 4890 KBRANCH:genericx86-64 = "v6.1/standard/base"
3770 KBRANCH_edgerouter = "standard/edgerouter" 4891 KBRANCH:beaglebone-yocto = "v6.1/standard/beaglebone"
3771 KBRANCH_beaglebone = "standard/beaglebone"
3772 4892
3773 The ``KBRANCH`` statements 4893 The :term:`KBRANCH` statements
3774 identify the kernel branch to use when building for each supported 4894 identify the kernel branch to use when building for each supported
3775 BSP. 4895 BSP.
3776 4896
3777 :term:`KBUILD_DEFCONFIG` 4897 :term:`KBUILD_DEFCONFIG`
3778 When used with the :ref:`kernel-yocto <ref-classes-kernel-yocto>` 4898 When used with the :ref:`ref-classes-kernel-yocto`
3779 class, specifies an "in-tree" kernel configuration file for use 4899 class, specifies an "in-tree" kernel configuration file for use
3780 during a kernel build. 4900 during a kernel build.
3781 4901
@@ -3784,60 +4904,175 @@ system and gives an overview of their function and contents.
3784 would place patch files and configuration fragment files (i.e. 4904 would place patch files and configuration fragment files (i.e.
3785 "out-of-tree"). However, if you want to use a ``defconfig`` file that 4905 "out-of-tree"). However, if you want to use a ``defconfig`` file that
3786 is part of the kernel tree (i.e. "in-tree"), you can use the 4906 is part of the kernel tree (i.e. "in-tree"), you can use the
3787 ``KBUILD_DEFCONFIG`` variable and append the 4907 :term:`KBUILD_DEFCONFIG` variable to point to the
3788 :term:`KMACHINE` variable to point to the
3789 ``defconfig`` file. 4908 ``defconfig`` file.
3790 4909
3791 To use the variable, set it in the append file for your kernel recipe 4910 To use the variable, set it in the append file for your kernel recipe
3792 using the following form: 4911 using the following form::
3793 ::
3794 4912
3795 KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file 4913 KBUILD_DEFCONFIG:<machine> ?= "defconfig_file"
3796 4914
3797 Here is an example from a "raspberrypi2" ``KMACHINE`` build that uses 4915 Here is an example from a "raspberrypi2" :term:`MACHINE` build that uses
3798 a ``defconfig`` file named "bcm2709_defconfig": 4916 a ``defconfig`` file named "bcm2709_defconfig"::
3799 ::
3800 4917
3801 KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig" 4918 KBUILD_DEFCONFIG:raspberrypi2 = "bcm2709_defconfig"
3802 4919
3803 As an alternative, you can use the following within your append file: 4920 As an alternative, you can use the following within your append file::
3804 ::
3805 4921
3806 KBUILD_DEFCONFIG_pn-linux-yocto ?= defconfig_file 4922 KBUILD_DEFCONFIG:pn-linux-yocto ?= "defconfig_file"
3807 4923
3808 For more 4924 For more
3809 information on how to use the ``KBUILD_DEFCONFIG`` variable, see the 4925 information on how to use the :term:`KBUILD_DEFCONFIG` variable, see the
3810 ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`" 4926 ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`"
3811 section in the Yocto Project Linux Kernel Development Manual. 4927 section in the Yocto Project Linux Kernel Development Manual.
3812 4928
4929 :term:`KCONF_AUDIT_LEVEL`
4930 When inheriting the :ref:`ref-classes-kernel-yocto` class and when the
4931 :term:`KMETA_AUDIT` variable is set to a non-empty string, the
4932 :term:`KCONF_AUDIT_LEVEL` variable specifies whether to report Kernel
4933 configuration values that are different from the user-specified value. Its
4934 value is a positive integer (default: 1):
4935
4936 - 0: no reporting is done.
4937
4938 - 1: report the problems as warnings and trigger an error if
4939 :term:`KMETA_AUDIT_WERROR` is set.
4940
4941 - 2: if the :ref:`ref-tasks-kernel_configme` has failed to generate a
4942 ``.config`` file, print the content of the ``merge_config_build.log``
4943 file containing the errors, instead of just providing the path to
4944 that file.
4945
4946 For more details see the :ref:`ref-classes-kernel-yocto` class and the
4947 :yocto_git:`symbol_why.py </yocto-kernel-tools/tree/tools/symbol_why.py>`
4948 script in :yocto_git:`yocto-kernel-tools </yocto-kernel-tools>`.
4949
4950 :term:`KCONF_BSP_AUDIT_LEVEL`
4951 When inheriting the :ref:`ref-classes-kernel-yocto` class and when the
4952 :term:`KMETA_AUDIT` variable is set to a non-empty string, the
4953 :term:`KCONF_BSP_AUDIT_LEVEL` variable can be set to report:
4954
4955 #. User-specified Kernel configurations that did not make it into the final
4956 Kernel configuration.
4957
4958 #. Configurations defined in multiple input files with differing values.
4959
4960 Its value is a positive integer (default: 0):
4961
4962 - 0: no reporting is done.
4963
4964 - 1: reporting of configuration options that did not make it in the
4965 final configuration is done and is not limited to the current
4966 architecture (``ARCH``) in use.
4967
4968 - 2: reporting of configuration options that did not make it in the
4969 final configuration is done and is strictly limited to the current
4970 architecture (``ARCH``) in use.
4971
4972 - 3: report the problems found when this variable equals 2, and also
4973 report configurations options defined in multiple input files with
4974 differing values.
4975
4976 For value 1, 2 and 3 an error is produced if :term:`KMETA_AUDIT_WERROR`
4977 is set.
4978
4979 For more details see the :ref:`ref-classes-kernel-yocto` class and the
4980 :yocto_git:`symbol_why.py </yocto-kernel-tools/tree/tools/symbol_why.py>`
4981 script in :yocto_git:`yocto-kernel-tools </yocto-kernel-tools>`.
4982
4983 :term:`KCONFIG_MODE`
4984 When used with the :ref:`ref-classes-kernel-yocto`
4985 class, specifies the kernel configuration values to use for options
4986 not specified in the provided ``defconfig`` file. Valid options are::
4987
4988 KCONFIG_MODE = "alldefconfig"
4989 KCONFIG_MODE = "allnoconfig"
4990
4991 In ``alldefconfig`` mode the options not explicitly specified will be
4992 assigned their Kconfig default value. In ``allnoconfig`` mode the
4993 options not explicitly specified will be disabled in the kernel
4994 config.
4995
4996 In case :term:`KCONFIG_MODE` is not set the ``defconfig`` file
4997 will be handled in ``allnoconfig`` mode.
4998
4999 A ``defconfig`` file compatible with ``allnoconfig`` mode can be
5000 generated by copying the ``.config`` file from a working Linux kernel
5001 build, renaming it to ``defconfig`` and placing it into the Linux
5002 kernel ``${WORKDIR}`` through your meta-layer. :term:`KCONFIG_MODE` does
5003 not need to be explicitly set.
5004
5005 A ``defconfig`` file compatible with ``alldefconfig`` mode can be
5006 generated using the
5007 :ref:`ref-tasks-savedefconfig`
5008 task and placed into the Linux kernel ``${WORKDIR}`` through your
5009 meta-layer. Explicitely set :term:`KCONFIG_MODE`::
5010
5011 KCONFIG_MODE = "alldefconfig"
5012
3813 :term:`KERNEL_ALT_IMAGETYPE` 5013 :term:`KERNEL_ALT_IMAGETYPE`
3814 Specifies an alternate kernel image type for creation in addition to 5014 Specifies an alternate kernel image type for creation in addition to
3815 the kernel image type specified using the 5015 the kernel image type specified using the :term:`KERNEL_IMAGETYPE` and
3816 :term:`KERNEL_IMAGETYPE` variable. 5016 :term:`KERNEL_IMAGETYPES` variables.
3817 5017
3818 :term:`KERNEL_ARTIFACT_NAME` 5018 :term:`KERNEL_ARTIFACT_NAME`
3819 Specifies the name of all of the build artifacts. You can change the 5019 Specifies the name of all of the build artifacts. You can change the
3820 name of the artifacts by changing the ``KERNEL_ARTIFACT_NAME`` 5020 name of the artifacts by changing the :term:`KERNEL_ARTIFACT_NAME`
3821 variable. 5021 variable.
3822 5022
3823 The value of ``KERNEL_ARTIFACT_NAME``, which is set in the 5023 The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the
3824 ``meta/classes/kernel-artifact-names.bbclass`` file, has the 5024 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the
3825 following default value: 5025 following default value::
3826 ::
3827 5026
3828 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" 5027 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
3829 5028
3830 See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`MACHINE` 5029 See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX`
3831 and :term:`IMAGE_VERSION_SUFFIX` variables for additional information. 5030 and :term:`IMAGE_VERSION_SUFFIX` variables for additional information.
3832 5031
3833 :term:`KERNEL_CLASSES` 5032 :term:`KERNEL_CLASSES`
3834 A list of classes defining kernel image types that the 5033 A list of classes defining kernel image types that the
3835 :ref:`kernel <ref-classes-kernel>` class should inherit. You 5034 :ref:`ref-classes-kernel` class should inherit. You typically
3836 typically append this variable to enable extended image types. An 5035 append this variable to enable extended image types.
3837 example is the "kernel-fitimage", which enables fitImage support and 5036 You can register custom kernel image types with the
3838 resides in ``meta/classes/kernel-fitimage.bbclass``. You can register 5037 :ref:`ref-classes-kernel` class using this variable.
3839 custom kernel image types with the ``kernel`` class using this 5038
3840 variable. 5039 :term:`KERNEL_CONSOLE`
5040 The :term:`KERNEL_CONSOLE` variable holds the value of the ``console``
5041 parameter of the kernel command line and can be used in places such as a
5042 ``wks`` description file for :ref:`Wic images <dev-manual/wic:creating
5043 partitioned images using wic>`.
5044
5045 The default value of this variable is extracted from the first console
5046 device and setting in :term:`SERIAL_CONSOLES`. If nothing is found in
5047 :term:`SERIAL_CONSOLES`, the default value is set to ``ttyS0,115200``.
5048
5049 For more information, see the `Kernel command-line documentation
5050 <https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html>`__.
5051
5052 :term:`KERNEL_DANGLING_FEATURES_WARN_ONLY`
5053 When kernel configuration fragments are missing for some
5054 :term:`KERNEL_FEATURES` specified by layers or BSPs,
5055 building and configuring the kernel stops with an error.
5056
5057 You can turn these errors into warnings by setting the
5058 following in ``conf/local.conf``::
5059
5060 KERNEL_DANGLING_FEATURES_WARN_ONLY = "1"
5061
5062 You will still be warned that runtime issues may occur,
5063 but at least the kernel configuration and build process will
5064 be allowed to continue.
5065
5066 :term:`KERNEL_DEBUG_TIMESTAMPS`
5067 If set to "1", enables timestamping functionality during building
5068 the kernel. The default is "0" to disable this for reproducibility
5069 reasons.
5070
5071 :term:`KERNEL_DEPLOY_DEPEND`
5072 Provides a means of controlling the dependency of an image recipe
5073 on the kernel. The default value is "virtual/kernel:do_deploy",
5074 however for a small initramfs image or other images that do not
5075 need the kernel, this can be set to "" in the image recipe.
3841 5076
3842 :term:`KERNEL_DEVICETREE` 5077 :term:`KERNEL_DEVICETREE`
3843 Specifies the name of the generated Linux kernel device tree (i.e. 5078 Specifies the name of the generated Linux kernel device tree (i.e.
@@ -3845,25 +5080,32 @@ system and gives an overview of their function and contents.
3845 5080
3846 .. note:: 5081 .. note::
3847 5082
3848 Legacy support exists for specifying the full path to the device 5083 There is legacy support for specifying the full path to the device
3849 tree. However, providing just the ``.dtb`` file is preferred. 5084 tree. However, providing just the ``.dtb`` file is preferred.
3850 5085
3851 In order to use this variable, the 5086 In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
3852 :ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class must 5087 class must be inherited.
3853 be inherited. 5088
5089 :term:`KERNEL_DEVICETREE_BUNDLE`
5090 When set to "1", this variable allows to bundle the Linux kernel
5091 and the Device Tree Binary together in a single file.
5092
5093 This feature is currently only supported on the "arm" (32 bit)
5094 architecture.
5095
5096 This variable is set to "0" by default by the
5097 :ref:`ref-classes-kernel-devicetree` class.
3854 5098
3855 :term:`KERNEL_DTB_LINK_NAME` 5099 :term:`KERNEL_DTB_LINK_NAME`
3856 The link name of the kernel device tree binary (DTB). This variable 5100 The link name of the kernel device tree binary (DTB). This variable
3857 is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as 5101 is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
3858 follows: 5102 follows::
3859 ::
3860 5103
3861 KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 5104 KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
3862 5105
3863 The 5106 The
3864 value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in 5107 value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in
3865 the same file, has the following value: 5108 the same file, has the following value::
3866 ::
3867 5109
3868 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 5110 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
3869 5111
@@ -3872,26 +5114,37 @@ system and gives an overview of their function and contents.
3872 5114
3873 :term:`KERNEL_DTB_NAME` 5115 :term:`KERNEL_DTB_NAME`
3874 The base name of the kernel device tree binary (DTB). This variable 5116 The base name of the kernel device tree binary (DTB). This variable
3875 is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as 5117 is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
3876 follows: 5118 follows::
3877 ::
3878 5119
3879 KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}" 5120 KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
3880 5121
3881 The value of the :term:`KERNEL_ARTIFACT_NAME` 5122 See :term:`KERNEL_ARTIFACT_NAME` for additional information.
3882 variable, which is set in the same file, has the following value: 5123
3883 :: 5124 :term:`KERNEL_DTBDEST`
5125 This variable, used by the :ref:`ref-classes-kernel-devicetree`
5126 class, allows to change the installation directory of the DTB
5127 (Device Tree Binary) files.
5128
5129 It is set by default to "${KERNEL_IMAGEDEST}" by the
5130 :ref:`ref-classes-kernel` class.
3884 5131
3885 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" 5132 :term:`KERNEL_DTBVENDORED`
5133 This variable, used by the :ref:`ref-classes-kernel-devicetree`,
5134 allows to ignore vendor subdirectories when installing DTB
5135 (Device Tree Binary) files, when it is set to "false".
5136
5137 To keep vendor subdirectories, set this variable to "true".
5138
5139 It is set by default to "false" by the :ref:`ref-classes-kernel` class.
3886 5140
3887 :term:`KERNEL_DTC_FLAGS` 5141 :term:`KERNEL_DTC_FLAGS`
3888 Specifies the ``dtc`` flags that are passed to the Linux kernel build 5142 Specifies the ``dtc`` flags that are passed to the Linux kernel build
3889 system when generating the device trees (via ``DTC_FLAGS`` environment 5143 system when generating the device trees (via ``DTC_FLAGS`` environment
3890 variable). 5144 variable).
3891 5145
3892 In order to use this variable, the 5146 In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
3893 :ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class must 5147 class must be inherited.
3894 be inherited.
3895 5148
3896 :term:`KERNEL_EXTRA_ARGS` 5149 :term:`KERNEL_EXTRA_ARGS`
3897 Specifies additional ``make`` command-line arguments the OpenEmbedded 5150 Specifies additional ``make`` command-line arguments the OpenEmbedded
@@ -3902,40 +5155,37 @@ system and gives an overview of their function and contents.
3902 system, the default Board Support Packages (BSPs) 5155 system, the default Board Support Packages (BSPs)
3903 :term:`Metadata` is provided through the 5156 :term:`Metadata` is provided through the
3904 :term:`KMACHINE` and :term:`KBRANCH` 5157 :term:`KMACHINE` and :term:`KBRANCH`
3905 variables. You can use the ``KERNEL_FEATURES`` variable from within 5158 variables. You can use the :term:`KERNEL_FEATURES` variable from within
3906 the kernel recipe or kernel append file to further add metadata for 5159 the kernel recipe or kernel append file to further add metadata for
3907 all BSPs or specific BSPs. 5160 all BSPs or specific BSPs.
3908 5161
3909 The metadata you add through this variable includes config fragments 5162 The metadata you add through this variable includes config fragments
3910 and features descriptions, which usually includes patches as well as 5163 and features descriptions, which usually includes patches as well as
3911 config fragments. You typically override the ``KERNEL_FEATURES`` 5164 config fragments. You typically override the :term:`KERNEL_FEATURES`
3912 variable for a specific machine. In this way, you can provide 5165 variable for a specific machine. In this way, you can provide
3913 validated, but optional, sets of kernel configurations and features. 5166 validated, but optional, sets of kernel configurations and features.
3914 5167
3915 For example, the following example from the ``linux-yocto-rt_4.12`` 5168 For example, the following example from the ``linux-yocto-rt_4.12``
3916 kernel recipe adds "netfilter" and "taskstats" features to all BSPs 5169 kernel recipe adds "netfilter" and "taskstats" features to all BSPs
3917 as well as "virtio" configurations to all QEMU machines. The last two 5170 as well as "virtio" configurations to all QEMU machines. The last two
3918 statements add specific configurations to targeted machine types: 5171 statements add specific configurations to targeted machine types::
3919 ::
3920 5172
3921 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" 5173 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
3922 KERNEL_FEATURES_append = "${KERNEL_EXTRA_FEATURES}" 5174 KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
3923 KERNEL_FEATURES_append_qemuall = "cfg/virtio.scc" 5175 KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc"
3924 KERNEL_FEATURES_append_qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc" 5176 KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc"
3925 KERNEL_FEATURES_append_qemux86-64 = "cfg/sound.scc" 5177 KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc"
3926 5178
3927 :term:`KERNEL_FIT_LINK_NAME` 5179 :term:`KERNEL_FIT_LINK_NAME`
3928 The link name of the kernel flattened image tree (FIT) image. This 5180 The link name of the kernel flattened image tree (FIT) image. This
3929 variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` 5181 variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
3930 file as follows: 5182 file as follows::
3931 ::
3932 5183
3933 KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 5184 KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
3934 5185
3935 The value of the 5186 The value of the
3936 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 5187 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
3937 file, has the following value: 5188 file, has the following value::
3938 ::
3939 5189
3940 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 5190 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
3941 5191
@@ -3944,29 +5194,22 @@ system and gives an overview of their function and contents.
3944 5194
3945 :term:`KERNEL_FIT_NAME` 5195 :term:`KERNEL_FIT_NAME`
3946 The base name of the kernel flattened image tree (FIT) image. This 5196 The base name of the kernel flattened image tree (FIT) image. This
3947 variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` 5197 variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
3948 file as follows: 5198 file as follows::
3949 ::
3950 5199
3951 KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}" 5200 KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
3952 5201
3953 The value of the :term:`KERNEL_ARTIFACT_NAME` 5202 See :term:`KERNEL_ARTIFACT_NAME` for additional information.
3954 variable, which is set in the same file, has the following value:
3955 ::
3956
3957 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
3958 5203
3959 :term:`KERNEL_IMAGE_LINK_NAME` 5204 :term:`KERNEL_IMAGE_LINK_NAME`
3960 The link name for the kernel image. This variable is set in the 5205 The link name for the kernel image. This variable is set in the
3961 ``meta/classes/kernel-artifact-names.bbclass`` file as follows: 5206 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
3962 ::
3963 5207
3964 KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 5208 KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
3965 5209
3966 The value of 5210 The value of
3967 the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 5211 the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same
3968 file, has the following value: 5212 file, has the following value::
3969 ::
3970 5213
3971 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 5214 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
3972 5215
@@ -3975,12 +5218,12 @@ system and gives an overview of their function and contents.
3975 5218
3976 :term:`KERNEL_IMAGE_MAXSIZE` 5219 :term:`KERNEL_IMAGE_MAXSIZE`
3977 Specifies the maximum size of the kernel image file in kilobytes. If 5220 Specifies the maximum size of the kernel image file in kilobytes. If
3978 ``KERNEL_IMAGE_MAXSIZE`` is set, the size of the kernel image file is 5221 :term:`KERNEL_IMAGE_MAXSIZE` is set, the size of the kernel image file is
3979 checked against the set value during the 5222 checked against the set value during the
3980 :ref:`ref-tasks-sizecheck` task. The task fails if 5223 :ref:`ref-tasks-sizecheck` task. The task fails if
3981 the kernel image file is larger than the setting. 5224 the kernel image file is larger than the setting.
3982 5225
3983 ``KERNEL_IMAGE_MAXSIZE`` is useful for target devices that have a 5226 :term:`KERNEL_IMAGE_MAXSIZE` is useful for target devices that have a
3984 limited amount of space in which the kernel image must be stored. 5227 limited amount of space in which the kernel image must be stored.
3985 5228
3986 By default, this variable is not set, which means the size of the 5229 By default, this variable is not set, which means the size of the
@@ -3988,17 +5231,11 @@ system and gives an overview of their function and contents.
3988 5231
3989 :term:`KERNEL_IMAGE_NAME` 5232 :term:`KERNEL_IMAGE_NAME`
3990 The base name of the kernel image. This variable is set in the 5233 The base name of the kernel image. This variable is set in the
3991 ``meta/classes/kernel-artifact-names.bbclass`` file as follows: 5234 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
3992 ::
3993 5235
3994 KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}" 5236 KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
3995 5237
3996 The value of the 5238 See :term:`KERNEL_ARTIFACT_NAME` for additional information.
3997 :term:`KERNEL_ARTIFACT_NAME` variable,
3998 which is set in the same file, has the following value:
3999 ::
4000
4001 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
4002 5239
4003 :term:`KERNEL_IMAGETYPE` 5240 :term:`KERNEL_IMAGETYPE`
4004 The type of kernel to build for a device, usually set by the machine 5241 The type of kernel to build for a device, usually set by the machine
@@ -4006,9 +5243,22 @@ system and gives an overview of their function and contents.
4006 when building the kernel and is passed to ``make`` as the target to 5243 when building the kernel and is passed to ``make`` as the target to
4007 build. 5244 build.
4008 5245
4009 If you want to build an alternate kernel image type in addition to that 5246 To build additional kernel image types, use :term:`KERNEL_IMAGETYPES`.
4010 specified by ``KERNEL_IMAGETYPE``, use the :term:`KERNEL_ALT_IMAGETYPE` 5247
4011 variable. 5248 :term:`KERNEL_IMAGETYPES`
5249 Lists additional types of kernel images to build for a device in addition
5250 to image type specified in :term:`KERNEL_IMAGETYPE`. Usually set by the
5251 machine configuration files.
5252
5253 :term:`KERNEL_LOCALVERSION`
5254 This variable allows to append a string to the version
5255 of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION``
5256 kernel configuration parameter.
5257
5258 Using this variable is only useful when you are using a kernel recipe
5259 inheriting the :ref:`ref-classes-kernel` class, and which doesn't
5260 already set a local version. Therefore, setting this variable has no
5261 impact on ``linux-yocto`` kernels.
4012 5262
4013 :term:`KERNEL_MODULE_AUTOLOAD` 5263 :term:`KERNEL_MODULE_AUTOLOAD`
4014 Lists kernel modules that need to be auto-loaded during boot. 5264 Lists kernel modules that need to be auto-loaded during boot.
@@ -4018,23 +5268,21 @@ system and gives an overview of their function and contents.
4018 This variable replaces the deprecated :term:`module_autoload` 5268 This variable replaces the deprecated :term:`module_autoload`
4019 variable. 5269 variable.
4020 5270
4021 You can use the ``KERNEL_MODULE_AUTOLOAD`` variable anywhere that it 5271 You can use the :term:`KERNEL_MODULE_AUTOLOAD` variable anywhere that it
4022 can be recognized by the kernel recipe or by an out-of-tree kernel 5272 can be recognized by the kernel recipe or by an out-of-tree kernel
4023 module recipe (e.g. a machine configuration file, a distribution 5273 module recipe (e.g. a machine configuration file, a distribution
4024 configuration file, an append file for the recipe, or the recipe 5274 configuration file, an append file for the recipe, or the recipe
4025 itself). 5275 itself).
4026 5276
4027 Specify it as follows: 5277 Specify it as follows::
4028 ::
4029 5278
4030 KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3" 5279 KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3"
4031 5280
4032 Including ``KERNEL_MODULE_AUTOLOAD`` causes the OpenEmbedded build 5281 Including :term:`KERNEL_MODULE_AUTOLOAD` causes the OpenEmbedded build
4033 system to populate the ``/etc/modules-load.d/modname.conf`` file with 5282 system to populate the ``/etc/modules-load.d/modname.conf`` file with
4034 the list of modules to be auto-loaded on boot. The modules appear 5283 the list of modules to be auto-loaded on boot. The modules appear
4035 one-per-line in the file. Here is an example of the most common use 5284 one-per-line in the file. Here is an example of the most common use
4036 case: 5285 case::
4037 ::
4038 5286
4039 KERNEL_MODULE_AUTOLOAD += "module_name" 5287 KERNEL_MODULE_AUTOLOAD += "module_name"
4040 5288
@@ -4048,56 +5296,86 @@ system and gives an overview of their function and contents.
4048 provide those module configurations, see the 5296 provide those module configurations, see the
4049 :term:`module_conf_* <module_conf>` variable. 5297 :term:`module_conf_* <module_conf>` variable.
4050 5298
5299 :term:`KERNEL_PACKAGE_NAME`
5300 Specifies the base name of the kernel packages, such as "kernel"
5301 in the kernel packages such as "kernel-modules", "kernel-image" and
5302 "kernel-dbg".
5303
5304 The default value for this variable is set to "kernel" by the
5305 :ref:`ref-classes-kernel` class.
5306
4051 :term:`KERNEL_PATH` 5307 :term:`KERNEL_PATH`
4052 The location of the kernel sources. This variable is set to the value 5308 The location of the kernel sources. This variable is set to the value
4053 of the :term:`STAGING_KERNEL_DIR` within 5309 of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
4054 the :ref:`module <ref-classes-module>` class. For information on 5310 class. For information on how this variable is used, see the
4055 how this variable is used, see the
4056 ":ref:`kernel-dev/common:incorporating out-of-tree modules`" 5311 ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
4057 section in the Yocto Project Linux Kernel Development Manual. 5312 section in the Yocto Project Linux Kernel Development Manual.
4058 5313
4059 To help maximize compatibility with out-of-tree drivers used to build 5314 To help maximize compatibility with out-of-tree drivers used to build
4060 modules, the OpenEmbedded build system also recognizes and uses the 5315 modules, the OpenEmbedded build system also recognizes and uses the
4061 :term:`KERNEL_SRC` variable, which is identical to 5316 :term:`KERNEL_SRC` variable, which is identical to
4062 the ``KERNEL_PATH`` variable. Both variables are common variables 5317 the :term:`KERNEL_PATH` variable. Both variables are common variables
4063 used by external Makefiles to point to the kernel source directory. 5318 used by external Makefiles to point to the kernel source directory.
4064 5319
5320 :term:`KERNEL_SPLIT_MODULES`
5321 When inheriting the :ref:`ref-classes-kernel-module-split` class, this
5322 variable controls whether kernel modules are split into separate packages
5323 or bundled into a single package.
5324
5325 For some use cases, a monolithic kernel module package
5326 :term:`KERNEL_PACKAGE_NAME` that contains all modules built from the
5327 kernel sources may be preferred to speed up the installation.
5328
5329 By default, this variable is set to ``1``, resulting in one package per
5330 module. Setting it to any other value will generate a single monolithic
5331 package containing all kernel modules.
5332
5333 .. note::
5334
5335 If :term:`KERNEL_SPLIT_MODULES` is set to 0, it is still possible to
5336 install all kernel modules at once by adding ``kernel-modules`` (assuming
5337 :term:`KERNEL_PACKAGE_NAME` is ``kernel-modules``) to :term:`IMAGE_INSTALL`.
5338 The way it works is that a placeholder "kernel-modules" package will be
5339 created and will depend on every other individual kernel module packages.
5340
4065 :term:`KERNEL_SRC` 5341 :term:`KERNEL_SRC`
4066 The location of the kernel sources. This variable is set to the value 5342 The location of the kernel sources. This variable is set to the value
4067 of the :term:`STAGING_KERNEL_DIR` within 5343 of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
4068 the :ref:`module <ref-classes-module>` class. For information on 5344 class. For information on how this variable is used, see the
4069 how this variable is used, see the
4070 ":ref:`kernel-dev/common:incorporating out-of-tree modules`" 5345 ":ref:`kernel-dev/common:incorporating out-of-tree modules`"
4071 section in the Yocto Project Linux Kernel Development Manual. 5346 section in the Yocto Project Linux Kernel Development Manual.
4072 5347
4073 To help maximize compatibility with out-of-tree drivers used to build 5348 To help maximize compatibility with out-of-tree drivers used to build
4074 modules, the OpenEmbedded build system also recognizes and uses the 5349 modules, the OpenEmbedded build system also recognizes and uses the
4075 :term:`KERNEL_PATH` variable, which is identical 5350 :term:`KERNEL_PATH` variable, which is identical
4076 to the ``KERNEL_SRC`` variable. Both variables are common variables 5351 to the :term:`KERNEL_SRC` variable. Both variables are common variables
4077 used by external Makefiles to point to the kernel source directory. 5352 used by external Makefiles to point to the kernel source directory.
4078 5353
5354 :term:`KERNEL_STRIP`
5355 Allows to specific which ``strip`` command to use to strip the kernel
5356 binary, typically either GNU binutils ``strip`` or ``llvm-strip``.
5357
4079 :term:`KERNEL_VERSION` 5358 :term:`KERNEL_VERSION`
4080 Specifies the version of the kernel as extracted from ``version.h`` 5359 Specifies the version of the kernel as extracted from ``version.h``
4081 or ``utsrelease.h`` within the kernel sources. Effects of setting 5360 or ``utsrelease.h`` within the kernel sources. Effects of setting
4082 this variable do not take affect until the kernel has been 5361 this variable do not take effect until the kernel has been
4083 configured. Consequently, attempting to refer to this variable in 5362 configured. Consequently, attempting to refer to this variable in
4084 contexts prior to configuration will not work. 5363 contexts prior to configuration will not work.
4085 5364
4086 :term:`KERNELDEPMODDEPEND` 5365 :term:`KERNELDEPMODDEPEND`
4087 Specifies whether the data referenced through 5366 Specifies whether the data referenced through
4088 :term:`PKGDATA_DIR` is needed or not. The 5367 :term:`PKGDATA_DIR` is needed or not.
4089 ``KERNELDEPMODDEPEND`` does not control whether or not that data 5368 :term:`KERNELDEPMODDEPEND` does not control whether or not that data
4090 exists, but simply whether or not it is used. If you do not need to 5369 exists, but simply whether or not it is used. If you do not need to
4091 use the data, set the ``KERNELDEPMODDEPEND`` variable in your 5370 use the data, set the :term:`KERNELDEPMODDEPEND` variable in your
4092 ``initramfs`` recipe. Setting the variable there when the data is not 5371 :term:`Initramfs` recipe. Setting the variable there when the data is not
4093 needed avoids a potential dependency loop. 5372 needed avoids a potential dependency loop.
4094 5373
4095 :term:`KFEATURE_DESCRIPTION` 5374 :term:`KFEATURE_DESCRIPTION`
4096 Provides a short description of a configuration fragment. You use 5375 Provides a short description of a configuration fragment. You use
4097 this variable in the ``.scc`` file that describes a configuration 5376 this variable in the ``.scc`` file that describes a configuration
4098 fragment file. Here is the variable used in a file named ``smp.scc`` 5377 fragment file. Here is the variable used in a file named ``smp.scc``
4099 to describe SMP being enabled: 5378 to describe SMP being enabled::
4100 ::
4101 5379
4102 define KFEATURE_DESCRIPTION "Enable SMP" 5380 define KFEATURE_DESCRIPTION "Enable SMP"
4103 5381
@@ -4108,27 +5386,53 @@ system and gives an overview of their function and contents.
4108 OpenEmbedded build system understands as ``core2-32-intel-common`` 5386 OpenEmbedded build system understands as ``core2-32-intel-common``
4109 goes by a different name in the Linux Yocto kernel. The kernel 5387 goes by a different name in the Linux Yocto kernel. The kernel
4110 understands that machine as ``intel-core2-32``. For cases like these, 5388 understands that machine as ``intel-core2-32``. For cases like these,
4111 the ``KMACHINE`` variable maps the kernel machine name to the 5389 the :term:`KMACHINE` variable maps the kernel machine name to the
4112 OpenEmbedded build system machine name. 5390 OpenEmbedded build system machine name.
4113 5391
4114 These mappings between different names occur in the Yocto Linux 5392 These mappings between different names occur in the Yocto Linux
4115 Kernel's ``meta`` branch. As an example take a look in the 5393 Kernel's ``meta`` branch. As an example take a look in the
4116 ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file: 5394 ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file::
4117 :: 5395
4118 5396 LINUX_VERSION:core2-32-intel-common = "3.19.0"
4119 LINUX_VERSION_core2-32-intel-common = "3.19.0" 5397 COMPATIBLE_MACHINE:core2-32-intel-common = "${MACHINE}"
4120 COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}" 5398 SRCREV_meta:core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974"
4121 SRCREV_meta_core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974" 5399 SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
4122 SRCREV_machine_core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711" 5400 KMACHINE:core2-32-intel-common = "intel-core2-32"
4123 KMACHINE_core2-32-intel-common = "intel-core2-32" 5401 KBRANCH:core2-32-intel-common = "standard/base"
4124 KBRANCH_core2-32-intel-common = "standard/base" 5402 KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}"
4125 KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}" 5403
4126 5404 The :term:`KMACHINE` statement says
4127 The ``KMACHINE`` statement says
4128 that the kernel understands the machine name as "intel-core2-32". 5405 that the kernel understands the machine name as "intel-core2-32".
4129 However, the OpenEmbedded build system understands the machine as 5406 However, the OpenEmbedded build system understands the machine as
4130 "core2-32-intel-common". 5407 "core2-32-intel-common".
4131 5408
5409 :term:`KMETA_AUDIT`
5410 When inheriting the :ref:`ref-classes-kernel-yocto` class, the
5411 :term:`KMETA_AUDIT` variable enables or disables auditing of Linux Kernel
5412 configuration. The default value for this variable is "yes", and auditing
5413 is enabled. Set this variable to an empty string to disable auditing.
5414
5415 :term:`KMETA_AUDIT_WERROR`
5416 When inheriting the :ref:`ref-classes-kernel-yocto` class and when the
5417 :term:`KMETA_AUDIT` and the :term:`KMETA_AUDIT_WERROR` variables are set
5418 to non-empty strings, produce an error if Linux kernel configuration
5419 problems were detected, instead of warnings only. For more details on the
5420 Linux Kernel configuration auditing feature, see :term:`KCONF_AUDIT_LEVEL`
5421 and :term:`KCONF_BSP_AUDIT_LEVEL`.
5422
5423 :term:`KMETA_CONFIG_FEATURES`
5424 The :term:`KMETA_CONFIG_FEATURES` variable defines features enabled for the
5425 :ref:`ref-classes-kernel-yocto` class. The following list of features are
5426 supported:
5427
5428 - ``prefer-modules``: prefer a kernel configuration to be set as ``m``
5429 instead of the default value ``y`` if the kernel configuration was
5430 defined as follows::
5431
5432 CONFIG_FOO=y # OVERRIDE:$MODULE_OR_Y
5433
5434 The default value of this variable is an empty string.
5435
4132 :term:`KTYPE` 5436 :term:`KTYPE`
4133 Defines the kernel type to be used in assembling the configuration. 5437 Defines the kernel type to be used in assembling the configuration.
4134 The linux-yocto recipes define "standard", "tiny", and "preempt-rt" 5438 The linux-yocto recipes define "standard", "tiny", and "preempt-rt"
@@ -4137,7 +5441,7 @@ system and gives an overview of their function and contents.
4137 Yocto Project Linux Kernel Development Manual for more information on 5441 Yocto Project Linux Kernel Development Manual for more information on
4138 kernel types. 5442 kernel types.
4139 5443
4140 You define the ``KTYPE`` variable in the 5444 You define the :term:`KTYPE` variable in the
4141 :ref:`kernel-dev/advanced:bsp descriptions`. The 5445 :ref:`kernel-dev/advanced:bsp descriptions`. The
4142 value you use must match the value used for the 5446 value you use must match the value used for the
4143 :term:`LINUX_KERNEL_TYPE` value used by the 5447 :term:`LINUX_KERNEL_TYPE` value used by the
@@ -4146,14 +5450,13 @@ system and gives an overview of their function and contents.
4146 :term:`LABELS` 5450 :term:`LABELS`
4147 Provides a list of targets for automatic configuration. 5451 Provides a list of targets for automatic configuration.
4148 5452
4149 See the :ref:`grub-efi <ref-classes-grub-efi>` class for more 5453 See the :ref:`ref-classes-grub-efi` class for more
4150 information on how this variable is used. 5454 information on how this variable is used.
4151 5455
4152 :term:`LAYERDEPENDS` 5456 :term:`LAYERDEPENDS`
4153 Lists the layers, separated by spaces, on which this recipe depends. 5457 Lists the layers, separated by spaces, on which this recipe depends.
4154 Optionally, you can specify a specific layer version for a dependency 5458 Optionally, you can specify a specific layer version for a dependency
4155 by adding it to the end of the layer name. Here is an example: 5459 by adding it to the end of the layer name. Here is an example::
4156 ::
4157 5460
4158 LAYERDEPENDS_mylayer = "anotherlayer (=3)" 5461 LAYERDEPENDS_mylayer = "anotherlayer (=3)"
4159 5462
@@ -4172,14 +5475,16 @@ system and gives an overview of their function and contents.
4172 available outside of ``layer.conf`` and references are expanded 5475 available outside of ``layer.conf`` and references are expanded
4173 immediately when parsing of the file completes. 5476 immediately when parsing of the file completes.
4174 5477
5478 :term:`LAYERDIR_RE`
5479 See :term:`bitbake:LAYERDIR_RE` in the BitBake manual.
5480
4175 :term:`LAYERRECOMMENDS` 5481 :term:`LAYERRECOMMENDS`
4176 Lists the layers, separated by spaces, recommended for use with this 5482 Lists the layers, separated by spaces, recommended for use with this
4177 layer. 5483 layer.
4178 5484
4179 Optionally, you can specify a specific layer version for a 5485 Optionally, you can specify a specific layer version for a
4180 recommendation by adding the version to the end of the layer name. 5486 recommendation by adding the version to the end of the layer name.
4181 Here is an example: 5487 Here is an example::
4182 ::
4183 5488
4184 LAYERRECOMMENDS_mylayer = "anotherlayer (=3)" 5489 LAYERRECOMMENDS_mylayer = "anotherlayer (=3)"
4185 5490
@@ -4191,32 +5496,7 @@ system and gives an overview of their function and contents.
4191 ``LAYERRECOMMENDS_mylayer``). 5496 ``LAYERRECOMMENDS_mylayer``).
4192 5497
4193 :term:`LAYERSERIES_COMPAT` 5498 :term:`LAYERSERIES_COMPAT`
4194 Lists the versions of the :term:`OpenEmbedded-Core (OE-Core)` for which 5499 See :term:`bitbake:LAYERSERIES_COMPAT` in the BitBake manual.
4195 a layer is compatible. Using the ``LAYERSERIES_COMPAT`` variable
4196 allows the layer maintainer to indicate which combinations of the
4197 layer and OE-Core can be expected to work. The variable gives the
4198 system a way to detect when a layer has not been tested with new
4199 releases of OE-Core (e.g. the layer is not maintained).
4200
4201 To specify the OE-Core versions for which a layer is compatible, use
4202 this variable in your layer's ``conf/layer.conf`` configuration file.
4203 For the list, use the Yocto Project
4204 :yocto_wiki:`Release Name </Releases>` (e.g.
4205 &DISTRO_NAME_NO_CAP;). To specify multiple OE-Core versions for the
4206 layer, use a space-separated list:
4207 ::
4208
4209 LAYERSERIES_COMPAT_layer_root_name = "&DISTRO_NAME_NO_CAP; &DISTRO_NAME_NO_CAP_MINUS_ONE;"
4210
4211 .. note::
4212
4213 Setting ``LAYERSERIES_COMPAT`` is required by the Yocto Project
4214 Compatible version 2 standard.
4215 The OpenEmbedded build system produces a warning if the variable
4216 is not set for any given layer.
4217
4218 See the ":ref:`dev-manual/common-tasks:creating your own layer`"
4219 section in the Yocto Project Development Tasks Manual.
4220 5500
4221 :term:`LAYERVERSION` 5501 :term:`LAYERVERSION`
4222 Optionally specifies the version of a layer as a single number. You 5502 Optionally specifies the version of a layer as a single number. You
@@ -4227,14 +5507,15 @@ system and gives an overview of their function and contents.
4227 ``LAYERVERSION_mylayer``). 5507 ``LAYERVERSION_mylayer``).
4228 5508
4229 :term:`LD` 5509 :term:`LD`
4230 The minimal command and arguments used to run the linker. 5510 The minimal command and arguments used to run the :manpage:`linker
5511 <ld(1)>`.
4231 5512
4232 :term:`LDFLAGS` 5513 :term:`LDFLAGS`
4233 Specifies the flags to pass to the linker. This variable is exported 5514 Specifies the flags to pass to the linker. This variable is exported
4234 to an environment variable and thus made visible to the software 5515 to an environment variable and thus made visible to the software
4235 being built during the compilation step. 5516 being built during the compilation step.
4236 5517
4237 Default initialization for ``LDFLAGS`` varies depending on what is 5518 Default initialization for :term:`LDFLAGS` varies depending on what is
4238 being built: 5519 being built:
4239 5520
4240 - :term:`TARGET_LDFLAGS` when building for the 5521 - :term:`TARGET_LDFLAGS` when building for the
@@ -4248,10 +5529,11 @@ system and gives an overview of their function and contents.
4248 5529
4249 :term:`LEAD_SONAME` 5530 :term:`LEAD_SONAME`
4250 Specifies the lead (or primary) compiled library file (i.e. ``.so``) 5531 Specifies the lead (or primary) compiled library file (i.e. ``.so``)
4251 that the :ref:`debian <ref-classes-debian>` class applies its 5532 that the :ref:`ref-classes-debian` class applies its
4252 naming policy to given a recipe that packages multiple libraries. 5533 naming policy to given a recipe that packages multiple libraries.
4253 5534
4254 This variable works in conjunction with the ``debian`` class. 5535 This variable works in conjunction with the :ref:`ref-classes-debian`
5536 class.
4255 5537
4256 :term:`LIC_FILES_CHKSUM` 5538 :term:`LIC_FILES_CHKSUM`
4257 Checksums of the license text in the recipe source code. 5539 Checksums of the license text in the recipe source code.
@@ -4264,7 +5546,7 @@ system and gives an overview of their function and contents.
4264 This variable must be defined for all recipes (unless 5546 This variable must be defined for all recipes (unless
4265 :term:`LICENSE` is set to "CLOSED"). 5547 :term:`LICENSE` is set to "CLOSED").
4266 5548
4267 For more information, see the ":ref:`dev-manual/common-tasks:tracking license changes`" 5549 For more information, see the ":ref:`dev-manual/licenses:tracking license changes`"
4268 section in the Yocto Project Development Tasks Manual. 5550 section in the Yocto Project Development Tasks Manual.
4269 5551
4270 :term:`LICENSE` 5552 :term:`LICENSE`
@@ -4275,8 +5557,8 @@ system and gives an overview of their function and contents.
4275 - Separate license names using \| (pipe) when there is a choice 5557 - Separate license names using \| (pipe) when there is a choice
4276 between licenses. 5558 between licenses.
4277 5559
4278 - Separate license names using & (ampersand) when multiple licenses 5560 - Separate license names using & (ampersand) when there are
4279 exist that cover different parts of the source. 5561 multiple licenses for different parts of the source.
4280 5562
4281 - You can use spaces between license names. 5563 - You can use spaces between license names.
4282 5564
@@ -4285,12 +5567,11 @@ system and gives an overview of their function and contents.
4285 :term:`SPDXLICENSEMAP` flag names defined in 5567 :term:`SPDXLICENSEMAP` flag names defined in
4286 ``meta/conf/licenses.conf``. 5568 ``meta/conf/licenses.conf``.
4287 5569
4288 Here are some examples: 5570 Here are some examples::
4289 ::
4290 5571
4291 LICENSE = "LGPLv2.1 | GPLv3" 5572 LICENSE = "LGPL-2.1-only | GPL-3.0-only"
4292 LICENSE = "MPL-1 & LGPLv2.1" 5573 LICENSE = "MPL-1.0 & LGPL-2.1-only"
4293 LICENSE = "GPLv2+" 5574 LICENSE = "GPL-2.0-or-later"
4294 5575
4295 The first example is from the 5576 The first example is from the
4296 recipes for Qt, which the user may choose to distribute under either 5577 recipes for Qt, which the user may choose to distribute under either
@@ -4303,19 +5584,18 @@ system and gives an overview of their function and contents.
4303 situations where components of the output have different licenses. 5584 situations where components of the output have different licenses.
4304 For example, a piece of software whose code is licensed under GPLv2 5585 For example, a piece of software whose code is licensed under GPLv2
4305 but has accompanying documentation licensed under the GNU Free 5586 but has accompanying documentation licensed under the GNU Free
4306 Documentation License 1.2 could be specified as follows: 5587 Documentation License 1.2 could be specified as follows::
4307 ::
4308 5588
4309 LICENSE = "GFDL-1.2 & GPLv2" 5589 LICENSE = "GFDL-1.2 & GPL-2.0-only"
4310 LICENSE_${PN} = "GPLv2" 5590 LICENSE:${PN} = "GPL-2.0.only"
4311 LICENSE_${PN}-doc = "GFDL-1.2" 5591 LICENSE:${PN}-doc = "GFDL-1.2"
4312 5592
4313 :term:`LICENSE_CREATE_PACKAGE` 5593 :term:`LICENSE_CREATE_PACKAGE`
4314 Setting ``LICENSE_CREATE_PACKAGE`` to "1" causes the OpenEmbedded 5594 Setting :term:`LICENSE_CREATE_PACKAGE` to "1" causes the OpenEmbedded
4315 build system to create an extra package (i.e. 5595 build system to create an extra package (i.e.
4316 ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add 5596 ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add
4317 those packages to the 5597 those packages to the
4318 :term:`RRECOMMENDS`\ ``_${PN}``. 5598 :term:`RRECOMMENDS`\ ``:${PN}``.
4319 5599
4320 The ``${PN}-lic`` package installs a directory in 5600 The ``${PN}-lic`` package installs a directory in
4321 ``/usr/share/licenses`` named ``${PN}``, which is the recipe's base 5601 ``/usr/share/licenses`` named ``${PN}``, which is the recipe's base
@@ -4330,37 +5610,52 @@ system and gives an overview of their function and contents.
4330 For related information on providing license text, see the 5610 For related information on providing license text, see the
4331 :term:`COPY_LIC_DIRS` variable, the 5611 :term:`COPY_LIC_DIRS` variable, the
4332 :term:`COPY_LIC_MANIFEST` variable, and the 5612 :term:`COPY_LIC_MANIFEST` variable, and the
4333 ":ref:`dev-manual/common-tasks:providing license text`" 5613 ":ref:`dev-manual/licenses:providing license text`"
4334 section in the Yocto Project Development Tasks Manual. 5614 section in the Yocto Project Development Tasks Manual.
4335 5615
4336 :term:`LICENSE_FLAGS` 5616 :term:`LICENSE_FLAGS`
4337 Specifies additional flags for a recipe you must whitelist through 5617 Specifies additional flags for a recipe you must allow through
4338 :term:`LICENSE_FLAGS_WHITELIST` in 5618 :term:`LICENSE_FLAGS_ACCEPTED` in
4339 order to allow the recipe to be built. When providing multiple flags, 5619 order for the recipe to be built. When providing multiple flags,
4340 separate them with spaces. 5620 separate them with spaces.
4341 5621
4342 This value is independent of :term:`LICENSE` and is 5622 This value is independent of :term:`LICENSE` and is
4343 typically used to mark recipes that might require additional licenses 5623 typically used to mark recipes that might require additional licenses
4344 in order to be used in a commercial product. For more information, 5624 in order to be used in a commercial product. For more information,
4345 see the 5625 see the
4346 ":ref:`dev-manual/common-tasks:enabling commercially licensed recipes`" 5626 ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
4347 section in the Yocto Project Development Tasks Manual. 5627 section in the Yocto Project Development Tasks Manual.
4348 5628
4349 :term:`LICENSE_FLAGS_WHITELIST` 5629 :term:`LICENSE_FLAGS_ACCEPTED`
4350 Lists license flags that when specified in 5630 Lists license flags that when specified in
4351 :term:`LICENSE_FLAGS` within a recipe should not 5631 :term:`LICENSE_FLAGS` within a recipe should not
4352 prevent that recipe from being built. This practice is otherwise 5632 prevent that recipe from being built. For more information, see the
4353 known as "whitelisting" license flags. For more information, see the 5633 ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
4354 ":ref:`dev-manual/common-tasks:enabling commercially licensed recipes`"
4355 section in the Yocto Project Development Tasks Manual. 5634 section in the Yocto Project Development Tasks Manual.
4356 5635
5636 :term:`LICENSE_FLAGS_DETAILS`
5637 Adds details about a flag in :term:`LICENSE_FLAGS`. This way,
5638 if such a flag is not accepted through :term:`LICENSE_FLAGS_ACCEPTED`,
5639 the error message will be more informative, containing the specified
5640 extra details.
5641
5642 For example, a recipe with an EULA may set::
5643
5644 LICENSE_FLAGS = "FooBar-EULA"
5645 LICENSE_FLAGS_DETAILS[FooBar-EULA] = "For further details, see https://example.com/eula."
5646
5647 If ``Foobar-EULA`` isn't in :term:`LICENSE_FLAGS_ACCEPTED`, the
5648 error message is more useful::
5649
5650 Has a restricted license 'FooBar-EULA' which is not listed in your LICENSE_FLAGS_ACCEPTED.
5651 For further details, see https://example.com/eula.
5652
4357 :term:`LICENSE_PATH` 5653 :term:`LICENSE_PATH`
4358 Path to additional licenses used during the build. By default, the 5654 Path to additional licenses used during the build. By default, the
4359 OpenEmbedded build system uses ``COMMON_LICENSE_DIR`` to define the 5655 OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the
4360 directory that holds common license text used during the build. The 5656 directory that holds common license text used during the build. The
4361 ``LICENSE_PATH`` variable allows you to extend that location to other 5657 :term:`LICENSE_PATH` variable allows you to extend that location to other
4362 areas that have additional licenses: 5658 areas that have additional licenses::
4363 ::
4364 5659
4365 LICENSE_PATH += "path-to-additional-common-licenses" 5660 LICENSE_PATH += "path-to-additional-common-licenses"
4366 5661
@@ -4372,9 +5667,9 @@ system and gives an overview of their function and contents.
4372 Yocto Project Linux Kernel Development Manual for more information on 5667 Yocto Project Linux Kernel Development Manual for more information on
4373 kernel types. 5668 kernel types.
4374 5669
4375 If you do not specify a ``LINUX_KERNEL_TYPE``, it defaults to 5670 If you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to
4376 "standard". Together with :term:`KMACHINE`, the 5671 "standard". Together with :term:`KMACHINE`, the
4377 ``LINUX_KERNEL_TYPE`` variable defines the search arguments used by 5672 :term:`LINUX_KERNEL_TYPE` variable defines the search arguments used by
4378 the kernel tools to find the appropriate description within the 5673 the kernel tools to find the appropriate description within the
4379 kernel :term:`Metadata` with which to build out the sources 5674 kernel :term:`Metadata` with which to build out the sources
4380 and configuration. 5675 and configuration.
@@ -4384,31 +5679,27 @@ system and gives an overview of their function and contents.
4384 being built using the OpenEmbedded build system is based. You define 5679 being built using the OpenEmbedded build system is based. You define
4385 this variable in the kernel recipe. For example, the 5680 this variable in the kernel recipe. For example, the
4386 ``linux-yocto-3.4.bb`` kernel recipe found in 5681 ``linux-yocto-3.4.bb`` kernel recipe found in
4387 ``meta/recipes-kernel/linux`` defines the variables as follows: 5682 ``meta/recipes-kernel/linux`` defines the variables as follows::
4388 ::
4389 5683
4390 LINUX_VERSION ?= "3.4.24" 5684 LINUX_VERSION ?= "3.4.24"
4391 5685
4392 The ``LINUX_VERSION`` variable is used to define :term:`PV` 5686 The :term:`LINUX_VERSION` variable is used to define :term:`PV`
4393 for the recipe: 5687 for the recipe::
4394 ::
4395 5688
4396 PV = "${LINUX_VERSION}+git${SRCPV}" 5689 PV = "${LINUX_VERSION}+git"
4397 5690
4398 :term:`LINUX_VERSION_EXTENSION` 5691 :term:`LINUX_VERSION_EXTENSION`
4399 A string extension compiled into the version string of the Linux 5692 A string extension compiled into the version string of the Linux
4400 kernel built with the OpenEmbedded build system. You define this 5693 kernel built with the OpenEmbedded build system. You define this
4401 variable in the kernel recipe. For example, the linux-yocto kernel 5694 variable in the kernel recipe. For example, the linux-yocto kernel
4402 recipes all define the variable as follows: 5695 recipes all define the variable as follows::
4403 ::
4404 5696
4405 LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}" 5697 LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}"
4406 5698
4407 Defining this variable essentially sets the Linux kernel 5699 Defining this variable essentially sets the Linux kernel
4408 configuration item ``CONFIG_LOCALVERSION``, which is visible through 5700 configuration item ``CONFIG_LOCALVERSION``, which is visible through
4409 the ``uname`` command. Here is an example that shows the extension 5701 the ``uname`` command. Here is an example that shows the extension
4410 assuming it was set as previously shown: 5702 assuming it was set as previously shown::
4411 ::
4412 5703
4413 $ uname -r 5704 $ uname -r
4414 3.7.0-rc8-custom 5705 3.7.0-rc8-custom
@@ -4422,24 +5713,22 @@ system and gives an overview of their function and contents.
4422 5713
4423 :term:`MACHINE` 5714 :term:`MACHINE`
4424 Specifies the target device for which the image is built. You define 5715 Specifies the target device for which the image is built. You define
4425 ``MACHINE`` in the ``local.conf`` file found in the 5716 :term:`MACHINE` in the ``local.conf`` file found in the
4426 :term:`Build Directory`. By default, ``MACHINE`` is set to 5717 :term:`Build Directory`. By default, :term:`MACHINE` is set to
4427 "qemux86", which is an x86-based architecture machine to be emulated 5718 "qemux86", which is an x86-based architecture machine to be emulated
4428 using QEMU: 5719 using QEMU::
4429 ::
4430 5720
4431 MACHINE ?= "qemux86" 5721 MACHINE ?= "qemux86"
4432 5722
4433 The variable corresponds to a machine configuration file of the same 5723 The variable corresponds to a machine configuration file of the same
4434 name, through which machine-specific configurations are set. Thus, 5724 name, through which machine-specific configurations are set. Thus,
4435 when ``MACHINE`` is set to "qemux86" there exists the corresponding 5725 when :term:`MACHINE` is set to "qemux86", the corresponding
4436 ``qemux86.conf`` machine configuration file, which can be found in 5726 ``qemux86.conf`` machine configuration file can be found in
4437 the :term:`Source Directory` in 5727 the :term:`Source Directory` in
4438 ``meta/conf/machine``. 5728 ``meta/conf/machine``.
4439 5729
4440 The list of machines supported by the Yocto Project as shipped 5730 The list of machines supported by the Yocto Project as shipped
4441 include the following: 5731 include the following::
4442 ::
4443 5732
4444 MACHINE ?= "qemuarm" 5733 MACHINE ?= "qemuarm"
4445 MACHINE ?= "qemuarm64" 5734 MACHINE ?= "qemuarm64"
@@ -4451,7 +5740,6 @@ system and gives an overview of their function and contents.
4451 MACHINE ?= "genericx86" 5740 MACHINE ?= "genericx86"
4452 MACHINE ?= "genericx86-64" 5741 MACHINE ?= "genericx86-64"
4453 MACHINE ?= "beaglebone" 5742 MACHINE ?= "beaglebone"
4454 MACHINE ?= "edgerouter"
4455 5743
4456 The last five are Yocto Project reference hardware 5744 The last five are Yocto Project reference hardware
4457 boards, which are provided in the ``meta-yocto-bsp`` layer. 5745 boards, which are provided in the ``meta-yocto-bsp`` layer.
@@ -4459,13 +5747,13 @@ system and gives an overview of their function and contents.
4459 .. note:: 5747 .. note::
4460 5748
4461 Adding additional Board Support Package (BSP) layers to your 5749 Adding additional Board Support Package (BSP) layers to your
4462 configuration adds new possible settings for ``MACHINE``. 5750 configuration adds new possible settings for :term:`MACHINE`.
4463 5751
4464 :term:`MACHINE_ARCH` 5752 :term:`MACHINE_ARCH`
4465 Specifies the name of the machine-specific architecture. This 5753 Specifies the name of the machine-specific architecture. This
4466 variable is set automatically from :term:`MACHINE` or 5754 variable is set automatically from :term:`MACHINE` or
4467 :term:`TUNE_PKGARCH`. You should not hand-edit 5755 :term:`TUNE_PKGARCH`. You should not hand-edit
4468 the ``MACHINE_ARCH`` variable. 5756 the :term:`MACHINE_ARCH` variable.
4469 5757
4470 :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS` 5758 :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
4471 A list of required machine-specific packages to install as part of 5759 A list of required machine-specific packages to install as part of
@@ -4477,7 +5765,7 @@ system and gives an overview of their function and contents.
4477 image. 5765 image.
4478 5766
4479 This variable is similar to the 5767 This variable is similar to the
4480 ``MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS`` variable with the exception 5768 :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` variable with the exception
4481 that the image being built has a build dependency on the variable's 5769 that the image being built has a build dependency on the variable's
4482 list of packages. In other words, the image will not build if a file 5770 list of packages. In other words, the image will not build if a file
4483 in this list is not found. 5771 in this list is not found.
@@ -4485,8 +5773,7 @@ system and gives an overview of their function and contents.
4485 As an example, suppose the machine for which you are building 5773 As an example, suppose the machine for which you are building
4486 requires ``example-init`` to be run during boot to initialize the 5774 requires ``example-init`` to be run during boot to initialize the
4487 hardware. In this case, you would use the following in the machine's 5775 hardware. In this case, you would use the following in the machine's
4488 ``.conf`` configuration file: 5776 ``.conf`` configuration file::
4489 ::
4490 5777
4491 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init" 5778 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init"
4492 5779
@@ -4499,7 +5786,7 @@ system and gives an overview of their function and contents.
4499 on ``packagegroup-core-boot``, including the ``core-image-minimal`` 5786 on ``packagegroup-core-boot``, including the ``core-image-minimal``
4500 image. 5787 image.
4501 5788
4502 This variable is similar to the ``MACHINE_ESSENTIAL_EXTRA_RDEPENDS`` 5789 This variable is similar to the :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS`
4503 variable with the exception that the image being built does not have 5790 variable with the exception that the image being built does not have
4504 a build dependency on the variable's list of packages. In other 5791 a build dependency on the variable's list of packages. In other
4505 words, the image will still build if a package in this list is not 5792 words, the image will still build if a package in this list is not
@@ -4517,8 +5804,7 @@ system and gives an overview of their function and contents.
4517 "recommends" relationship so that in the latter case, the build will 5804 "recommends" relationship so that in the latter case, the build will
4518 not fail due to the missing package. To accomplish this, assuming the 5805 not fail due to the missing package. To accomplish this, assuming the
4519 package for the module was called ``kernel-module-ab123``, you would 5806 package for the module was called ``kernel-module-ab123``, you would
4520 use the following in the machine's ``.conf`` configuration file: 5807 use the following in the machine's ``.conf`` configuration file::
4521 ::
4522 5808
4523 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123" 5809 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123"
4524 5810
@@ -4542,7 +5828,7 @@ system and gives an overview of their function and contents.
4542 which does not include the ``core-image-minimal`` or 5828 which does not include the ``core-image-minimal`` or
4543 ``core-image-full-cmdline`` images. 5829 ``core-image-full-cmdline`` images.
4544 5830
4545 The variable is similar to the ``MACHINE_EXTRA_RRECOMMENDS`` variable 5831 The variable is similar to the :term:`MACHINE_EXTRA_RRECOMMENDS` variable
4546 with the exception that the image being built has a build dependency 5832 with the exception that the image being built has a build dependency
4547 on the variable's list of packages. In other words, the image will 5833 on the variable's list of packages. In other words, the image will
4548 not build if a file in this list is not found. 5834 not build if a file in this list is not found.
@@ -4554,8 +5840,7 @@ system and gives an overview of their function and contents.
4554 exist, so it is acceptable for the build process to depend upon 5840 exist, so it is acceptable for the build process to depend upon
4555 finding the package. In this case, assuming the package for the 5841 finding the package. In this case, assuming the package for the
4556 firmware was called ``wifidriver-firmware``, you would use the 5842 firmware was called ``wifidriver-firmware``, you would use the
4557 following in the ``.conf`` file for the machine: 5843 following in the ``.conf`` file for the machine::
4558 ::
4559 5844
4560 MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware" 5845 MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware"
4561 5846
@@ -4568,7 +5853,7 @@ system and gives an overview of their function and contents.
4568 which does not include the ``core-image-minimal`` or 5853 which does not include the ``core-image-minimal`` or
4569 ``core-image-full-cmdline`` images. 5854 ``core-image-full-cmdline`` images.
4570 5855
4571 This variable is similar to the ``MACHINE_EXTRA_RDEPENDS`` variable 5856 This variable is similar to the :term:`MACHINE_EXTRA_RDEPENDS` variable
4572 with the exception that the image being built does not have a build 5857 with the exception that the image being built does not have a build
4573 dependency on the variable's list of packages. In other words, the 5858 dependency on the variable's list of packages. In other words, the
4574 image will build if a file in this list is not found. 5859 image will build if a file in this list is not found.
@@ -4581,8 +5866,7 @@ system and gives an overview of their function and contents.
4581 the build to succeed instead of failing as a result of the package 5866 the build to succeed instead of failing as a result of the package
4582 not being found. To accomplish this, assuming the package for the 5867 not being found. To accomplish this, assuming the package for the
4583 module was called ``kernel-module-examplewifi``, you would use the 5868 module was called ``kernel-module-examplewifi``, you would use the
4584 following in the ``.conf`` file for the machine: 5869 following in the ``.conf`` file for the machine::
4585 ::
4586 5870
4587 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi" 5871 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
4588 5872
@@ -4598,112 +5882,148 @@ system and gives an overview of their function and contents.
4598 shipped, see the ":ref:`ref-features-machine`" section. 5882 shipped, see the ":ref:`ref-features-machine`" section.
4599 5883
4600 :term:`MACHINE_FEATURES_BACKFILL` 5884 :term:`MACHINE_FEATURES_BACKFILL`
4601 Features to be added to ``MACHINE_FEATURES`` if not also present in 5885 A list of space-separated features to be added to
4602 ``MACHINE_FEATURES_BACKFILL_CONSIDERED``. 5886 :term:`MACHINE_FEATURES` if not also present in
5887 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`.
4603 5888
4604 This variable is set in the ``meta/conf/bitbake.conf`` file. It is 5889 This variable is set in the ``meta/conf/bitbake.conf`` file. It is not
4605 not intended to be user-configurable. It is best to just reference 5890 intended to be user-configurable. It is best to just reference the
4606 the variable to see which machine features are being backfilled for 5891 variable to see which machine features are being
4607 all machine configurations. See the ":ref:`ref-features-backfill`" 5892 :ref:`backfilled <ref-features-backfill>` for all machine configurations.
4608 section for more information.
4609 5893
4610 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` 5894 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`
4611 Features from ``MACHINE_FEATURES_BACKFILL`` that should not be 5895 A list of space-separated features from :term:`MACHINE_FEATURES_BACKFILL`
4612 backfilled (i.e. added to ``MACHINE_FEATURES``) during the build. See 5896 that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
4613 the ":ref:`ref-features-backfill`" section for more information. 5897 to :term:`MACHINE_FEATURES`) during the build.
5898
5899 This corresponds to an opt-out mechanism. When new default machine
5900 features are introduced, machine definition maintainers can review
5901 (`consider`) them and decide to exclude them from the
5902 :ref:`backfilled <ref-features-backfill>` features. Therefore, the
5903 combination of :term:`MACHINE_FEATURES_BACKFILL` and
5904 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` makes it possible to
5905 add new default features without breaking existing machine definitions.
4614 5906
4615 :term:`MACHINEOVERRIDES` 5907 :term:`MACHINEOVERRIDES`
4616 A colon-separated list of overrides that apply to the current 5908 A colon-separated list of overrides that apply to the current
4617 machine. By default, this list includes the value of 5909 machine. By default, this list includes the value of
4618 :term:`MACHINE`. 5910 :term:`MACHINE`.
4619 5911
4620 You can extend ``MACHINEOVERRIDES`` to add extra overrides that 5912 You can extend :term:`MACHINEOVERRIDES` to add extra overrides that
4621 should apply to a machine. For example, all machines emulated in QEMU 5913 should apply to a machine. For example, all machines emulated in QEMU
4622 (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named 5914 (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named
4623 ``meta/conf/machine/include/qemu.inc`` that prepends the following 5915 ``meta/conf/machine/include/qemu.inc`` that prepends the following
4624 override to ``MACHINEOVERRIDES``: 5916 override to :term:`MACHINEOVERRIDES`::
4625 ::
4626 5917
4627 MACHINEOVERRIDES =. "qemuall:" 5918 MACHINEOVERRIDES =. "qemuall:"
4628 5919
4629 This 5920 This
4630 override allows variables to be overridden for all machines emulated 5921 override allows variables to be overridden for all machines emulated
4631 in QEMU, like in the following example from the ``connman-conf`` 5922 in QEMU, like in the following example from the ``connman-conf``
4632 recipe: 5923 recipe::
4633 ::
4634 5924
4635 SRC_URI_append_qemuall = " file://wired.config \ 5925 SRC_URI:append:qemuall = " file://wired.config \
4636 file://wired-setup \ 5926 file://wired-setup \
4637 " 5927 "
4638 5928
4639 The underlying mechanism behind 5929 The underlying mechanism behind
4640 ``MACHINEOVERRIDES`` is simply that it is included in the default 5930 :term:`MACHINEOVERRIDES` is simply that it is included in the default
4641 value of :term:`OVERRIDES`. 5931 value of :term:`OVERRIDES`.
4642 5932
4643 :term:`MAINTAINER` 5933 :term:`MAINTAINER`
4644 The email address of the distribution maintainer. 5934 The email address of the distribution maintainer.
4645 5935
5936 :term:`MESON_BUILDTYPE`
5937 Value of the Meson ``--buildtype`` argument used by the
5938 :ref:`ref-classes-meson` class. It defaults to ``debug`` if
5939 :term:`DEBUG_BUILD` is set to "1", and ``plain`` otherwise.
5940
5941 See `Meson build options <https://mesonbuild.com/Builtin-options.html>`__
5942 for the values you could set in a recipe. Values such as ``plain``,
5943 ``debug``, ``debugoptimized``, ``release`` and ``minsize`` allow
5944 you to specify the inclusion of debugging symbols and the compiler
5945 optimizations (none, performance or size).
5946
5947 :term:`MESON_INSTALL_TAGS`
5948 A variable for the :ref:`ref-classes-meson` class, allowing to specify
5949 install tags (``--tags`` argument of the ``meson install`` command).
5950
5951 :term:`MESON_TARGET`
5952 A variable for the :ref:`ref-classes-meson` class, allowing to choose
5953 a Meson target to build in :ref:`ref-tasks-compile`. Otherwise, the
5954 default targets are built.
5955
5956 :term:`METADATA_BRANCH`
5957 The branch currently checked out for the OpenEmbedded-Core layer (path
5958 determined by :term:`COREBASE`).
5959
5960 :term:`METADATA_REVISION`
5961 The revision currently checked out for the OpenEmbedded-Core layer (path
5962 determined by :term:`COREBASE`).
5963
5964 :term:`MIME_XDG_PACKAGES`
5965 The current implementation of the :ref:`ref-classes-mime-xdg`
5966 class cannot detect ``.desktop`` files installed through absolute
5967 symbolic links. Use this setting to make the class create post-install
5968 and post-remove scripts for these packages anyway, to invoke the
5969 ``update-destop-database`` command.
5970
4646 :term:`MIRRORS` 5971 :term:`MIRRORS`
4647 Specifies additional paths from which the OpenEmbedded build system 5972 Specifies additional paths from which the OpenEmbedded build system
4648 gets source code. When the build system searches for source code, it 5973 gets source code. When the build system searches for source code, it
4649 first tries the local download directory. If that location fails, the 5974 first tries the local download directory. If that location fails, the
4650 build system tries locations defined by 5975 build system tries locations defined by
4651 :term:`PREMIRRORS`, the upstream source, and then 5976 :term:`PREMIRRORS`, the upstream source, and then
4652 locations specified by ``MIRRORS`` in that order. 5977 locations specified by :term:`MIRRORS` in that order.
4653 5978
4654 Assuming your distribution (:term:`DISTRO`) is "poky", 5979 The default value for :term:`MIRRORS` is defined in the
4655 the default value for ``MIRRORS`` is defined in the 5980 ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
4656 ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository.
4657 5981
4658 :term:`MLPREFIX` 5982 :term:`MLPREFIX`
4659 Specifies a prefix has been added to :term:`PN` to create a 5983 Specifies a prefix has been added to :term:`PN` to create a
4660 special version of a recipe or package (i.e. a Multilib version). The 5984 special version of a recipe or package (i.e. a Multilib version). The
4661 variable is used in places where the prefix needs to be added to or 5985 variable is used in places where the prefix needs to be added to or
4662 removed from a the name (e.g. the :term:`BPN` variable). 5986 removed from a name (e.g. the :term:`BPN` variable).
4663 ``MLPREFIX`` gets set when a prefix has been added to ``PN``. 5987 :term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`.
4664 5988
4665 .. note:: 5989 .. note::
4666 5990
4667 The "ML" in ``MLPREFIX`` stands for "MultiLib". This representation is 5991 The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation
4668 historical and comes from a time when ``nativesdk`` was a suffix 5992 is historical and comes from a time when ":ref:`ref-classes-nativesdk`"
4669 rather than a prefix on the recipe name. When ``nativesdk`` was turned 5993 was a suffix rather than a prefix on the recipe name. When
4670 into a prefix, it made sense to set ``MLPREFIX`` for it as well. 5994 ":ref:`ref-classes-nativesdk`" was turned into a prefix, it made sense
4671 5995 to set :term:`MLPREFIX` for it as well.
4672 To help understand when ``MLPREFIX`` might be needed, consider when 5996
4673 :term:`BBCLASSEXTEND` is used to provide a 5997 To help understand when :term:`MLPREFIX` might be needed, consider when
4674 ``nativesdk`` version of a recipe in addition to the target version. 5998 :term:`BBCLASSEXTEND` is used to provide a :ref:`ref-classes-nativesdk`
4675 If that recipe declares build-time dependencies on tasks in other 5999 version of a recipe in addition to the target version. If that recipe
4676 recipes by using :term:`DEPENDS`, then a dependency on 6000 declares build-time dependencies on tasks in other recipes by using
4677 "foo" will automatically get rewritten to a dependency on 6001 :term:`DEPENDS`, then a dependency on "foo" will automatically get
4678 "nativesdk-foo". However, dependencies like the following will not 6002 rewritten to a dependency on "nativesdk-foo". However, dependencies like
4679 get rewritten automatically: 6003 the following will not get rewritten automatically::
4680 ::
4681 6004
4682 do_foo[depends] += "recipe:do_foo" 6005 do_foo[depends] += "recipe:do_foo"
4683 6006
4684 If you want such a dependency to also get transformed, you can do the 6007 If you want such a dependency to also get transformed, you can do the
4685 following: 6008 following::
4686 ::
4687 6009
4688 do_foo[depends] += "${MLPREFIX}recipe:do_foo" 6010 do_foo[depends] += "${MLPREFIX}recipe:do_foo"
4689 6011
4690 module_autoload 6012 :term:`module_autoload`
4691 This variable has been replaced by the ``KERNEL_MODULE_AUTOLOAD`` 6013 This variable has been replaced by the :term:`KERNEL_MODULE_AUTOLOAD`
4692 variable. You should replace all occurrences of ``module_autoload`` 6014 variable. You should replace all occurrences of :term:`module_autoload`
4693 with additions to ``KERNEL_MODULE_AUTOLOAD``, for example: 6015 with additions to :term:`KERNEL_MODULE_AUTOLOAD`, for example::
4694 ::
4695 6016
4696 module_autoload_rfcomm = "rfcomm" 6017 module_autoload_rfcomm = "rfcomm"
4697 6018
4698 should now be replaced with: 6019 should now be replaced with::
4699 ::
4700 6020
4701 KERNEL_MODULE_AUTOLOAD += "rfcomm" 6021 KERNEL_MODULE_AUTOLOAD += "rfcomm"
4702 6022
4703 See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information. 6023 See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information.
4704 6024
4705 module_conf 6025 :term:`module_conf`
4706 Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`_ 6026 Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`__
4707 syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf`` 6027 syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf``
4708 file. 6028 file.
4709 6029
@@ -4712,24 +6032,22 @@ system and gives an overview of their function and contents.
4712 configuration file, a distribution configuration file, an append file 6032 configuration file, a distribution configuration file, an append file
4713 for the recipe, or the recipe itself). If you use this variable, you 6033 for the recipe, or the recipe itself). If you use this variable, you
4714 must also be sure to list the module name in the 6034 must also be sure to list the module name in the
4715 :term:`KERNEL_MODULE_AUTOLOAD` 6035 :term:`KERNEL_MODULE_PROBECONF`
4716 variable. 6036 variable.
4717 6037
4718 Here is the general syntax: 6038 Here is the general syntax::
4719 ::
4720 6039
4721 module_conf_module_name = "modprobe.d-syntax" 6040 module_conf_module_name = "modprobe.d-syntax"
4722 6041
4723 You must use the kernel module name override. 6042 You must use the kernel module name override.
4724 6043
4725 Run ``man modprobe.d`` in the shell to find out more information on 6044 Run ``man modprobe.d`` in the shell to find out more information on
4726 the exact syntax you want to provide with ``module_conf``. 6045 the exact syntax you want to provide with :term:`module_conf`.
4727 6046
4728 Including ``module_conf`` causes the OpenEmbedded build system to 6047 Including :term:`module_conf` causes the OpenEmbedded build system to
4729 populate the ``/etc/modprobe.d/modname.conf`` file with 6048 populate the ``/etc/modprobe.d/modname.conf`` file with
4730 ``modprobe.d`` syntax lines. Here is an example that adds the options 6049 ``modprobe.d`` syntax lines. Here is an example that adds the options
4731 ``arg1`` and ``arg2`` to a module named ``mymodule``: 6050 ``arg1`` and ``arg2`` to a module named ``mymodule``::
4732 ::
4733 6051
4734 module_conf_mymodule = "options mymodule arg1=val1 arg2=val2" 6052 module_conf_mymodule = "options mymodule arg1=val1 arg2=val2"
4735 6053
@@ -4743,15 +6061,13 @@ system and gives an overview of their function and contents.
4743 6061
4744 :term:`MODULE_TARBALL_LINK_NAME` 6062 :term:`MODULE_TARBALL_LINK_NAME`
4745 The link name of the kernel module tarball. This variable is set in 6063 The link name of the kernel module tarball. This variable is set in
4746 the ``meta/classes/kernel-artifact-names.bbclass`` file as follows: 6064 the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
4747 ::
4748 6065
4749 MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 6066 MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
4750 6067
4751 The value 6068 The value
4752 of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the 6069 of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the
4753 same file, has the following value: 6070 same file, has the following value::
4754 ::
4755 6071
4756 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 6072 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
4757 6073
@@ -4759,16 +6075,21 @@ system and gives an overview of their function and contents.
4759 6075
4760 :term:`MODULE_TARBALL_NAME` 6076 :term:`MODULE_TARBALL_NAME`
4761 The base name of the kernel module tarball. This variable is set in 6077 The base name of the kernel module tarball. This variable is set in
4762 the ``meta/classes/kernel-artifact-names.bbclass`` file as follows: 6078 the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
4763 ::
4764 6079
4765 MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}" 6080 MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
4766 6081
4767 The value of the :term:`KERNEL_ARTIFACT_NAME` variable, 6082 See :term:`KERNEL_ARTIFACT_NAME` for additional information.
4768 which is set in the same file, has the following value: 6083
4769 :: 6084 :term:`MOUNT_BASE`
6085 On non-systemd systems (where ``udev-extraconf`` is being used),
6086 specifies the base directory for auto-mounting filesystems. The
6087 default value is "/run/media".
4770 6088
4771 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" 6089 :term:`MOUNT_GROUP`
6090 On non-systemd systems (where ``udev-extraconf`` is being used),
6091 specifies the mount group for auto-mounting filesystems. The
6092 default value is "disk".
4772 6093
4773 :term:`MULTIMACH_TARGET_SYS` 6094 :term:`MULTIMACH_TARGET_SYS`
4774 Uniquely identifies the type of the target system for which packages 6095 Uniquely identifies the type of the target system for which packages
@@ -4776,14 +6097,12 @@ system and gives an overview of their function and contents.
4776 target systems to be put into different subdirectories of the same 6097 target systems to be put into different subdirectories of the same
4777 output directory. 6098 output directory.
4778 6099
4779 The default value of this variable is: 6100 The default value of this variable is::
4780 ::
4781 6101
4782 ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS} 6102 ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
4783 6103
4784 Some classes (e.g. 6104 Some classes (e.g. :ref:`ref-classes-cross-canadian`) modify the
4785 :ref:`cross-canadian <ref-classes-cross-canadian>`) modify the 6105 :term:`MULTIMACH_TARGET_SYS` value.
4786 ``MULTIMACH_TARGET_SYS`` value.
4787 6106
4788 See the :term:`STAMP` variable for an example. See the 6107 See the :term:`STAMP` variable for an example. See the
4789 :term:`STAGING_DIR_TARGET` variable for more information. 6108 :term:`STAGING_DIR_TARGET` variable for more information.
@@ -4804,27 +6123,25 @@ system and gives an overview of their function and contents.
4804 variable is set. 6123 variable is set.
4805 6124
4806 :term:`NM` 6125 :term:`NM`
4807 The minimal command and arguments to run ``nm``. 6126 The minimal command and arguments to run :manpage:`nm <nm(1)>`.
4808 6127
4809 :term:`NO_GENERIC_LICENSE` 6128 :term:`NO_GENERIC_LICENSE`
4810 Avoids QA errors when you use a non-common, non-CLOSED license in a 6129 Avoids QA errors when you use a non-common, non-CLOSED license in a
4811 recipe. Packages exist, such as the linux-firmware package, with many 6130 recipe. There are packages, such as the linux-firmware package, with many
4812 licenses that are not in any way common. Also, new licenses are added 6131 licenses that are not in any way common. Also, new licenses are added
4813 occasionally to avoid introducing a lot of common license files, 6132 occasionally to avoid introducing a lot of common license files,
4814 which are only applicable to a specific package. 6133 which are only applicable to a specific package.
4815 ``NO_GENERIC_LICENSE`` is used to allow copying a license that does 6134 :term:`NO_GENERIC_LICENSE` is used to allow copying a license that does
4816 not exist in common licenses. 6135 not exist in common licenses.
4817 6136
4818 The following example shows how to add ``NO_GENERIC_LICENSE`` to a 6137 The following example shows how to add :term:`NO_GENERIC_LICENSE` to a
4819 recipe: 6138 recipe::
4820 ::
4821 6139
4822 NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source" 6140 NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source"
4823 6141
4824 The following is an example that 6142 Here is an example that
4825 uses the ``LICENSE.Abilis.txt`` file as the license from the fetched 6143 uses the ``LICENSE.Abilis.txt`` file as the license from the fetched
4826 source: 6144 source::
4827 ::
4828 6145
4829 NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt" 6146 NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt"
4830 6147
@@ -4832,15 +6149,15 @@ system and gives an overview of their function and contents.
4832 Prevents installation of all "recommended-only" packages. 6149 Prevents installation of all "recommended-only" packages.
4833 Recommended-only packages are packages installed only through the 6150 Recommended-only packages are packages installed only through the
4834 :term:`RRECOMMENDS` variable). Setting the 6151 :term:`RRECOMMENDS` variable). Setting the
4835 ``NO_RECOMMENDATIONS`` variable to "1" turns this feature on: :: 6152 :term:`NO_RECOMMENDATIONS` variable to "1" turns this feature on::
4836 6153
4837 NO_RECOMMENDATIONS = "1" 6154 NO_RECOMMENDATIONS = "1"
4838 6155
4839 You can set this variable globally in your ``local.conf`` file or you 6156 You can set this variable globally in your ``local.conf`` file or you
4840 can attach it to a specific image recipe by using the recipe name 6157 can attach it to a specific image recipe by using the recipe name
4841 override: :: 6158 override::
4842 6159
4843 NO_RECOMMENDATIONS_pn-target_image = "1" 6160 NO_RECOMMENDATIONS:pn-target_image = "1"
4844 6161
4845 It is important to realize that if you choose to not install packages 6162 It is important to realize that if you choose to not install packages
4846 using this variable and some other packages are dependent on them 6163 using this variable and some other packages are dependent on them
@@ -4854,8 +6171,8 @@ system and gives an overview of their function and contents.
4854 functionality, such as kernel modules. It is up to you to add 6171 functionality, such as kernel modules. It is up to you to add
4855 packages with the :term:`IMAGE_INSTALL` variable. 6172 packages with the :term:`IMAGE_INSTALL` variable.
4856 6173
4857 Support for this variable exists only when using the IPK and RPM 6174 This variable is only supported when using the IPK and RPM
4858 packaging backend. Support does not exist for DEB. 6175 packaging backends. DEB is not supported.
4859 6176
4860 See the :term:`BAD_RECOMMENDATIONS` and 6177 See the :term:`BAD_RECOMMENDATIONS` and
4861 the :term:`PACKAGE_EXCLUDE` variables for 6178 the :term:`PACKAGE_EXCLUDE` variables for
@@ -4863,24 +6180,57 @@ system and gives an overview of their function and contents.
4863 6180
4864 :term:`NOAUTOPACKAGEDEBUG` 6181 :term:`NOAUTOPACKAGEDEBUG`
4865 Disables auto package from splitting ``.debug`` files. If a recipe 6182 Disables auto package from splitting ``.debug`` files. If a recipe
4866 requires ``FILES_${PN}-dbg`` to be set manually, the 6183 requires ``FILES:${PN}-dbg`` to be set manually, the
4867 ``NOAUTOPACKAGEDEBUG`` can be defined allowing you to define the 6184 :term:`NOAUTOPACKAGEDEBUG` can be defined allowing you to define the
4868 content of the debug package. For example: 6185 content of the debug package. For example::
4869 ::
4870 6186
4871 NOAUTOPACKAGEDEBUG = "1" 6187 NOAUTOPACKAGEDEBUG = "1"
4872 FILES_${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*" 6188 FILES:${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*"
4873 FILES_${PN}-dbg = "/usr/src/debug/" 6189 FILES:${PN}-dbg = "/usr/src/debug/"
4874 FILES_${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch" 6190 FILES:${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch"
6191
6192 :term:`NON_MULTILIB_RECIPES`
6193 A list of recipes that should not be built for multilib. OE-Core's
6194 ``multilib.conf`` file defines a reasonable starting point for this
6195 list with::
6196
6197 NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot"
6198
6199 :term:`NVD_DB_VERSION`
6200 The :term:`NVD_DB_VERSION` variable allows choosing the CVE feed when
6201 using the :ref:`ref-classes-cve-check` class. It can be one of:
6202
6203 - ``NVD2`` (default): the NVD feed with API version 2
6204 - ``FKIE``: the `FKIE-CAD <https://github.com/fkie-cad/nvd-json-data-feeds>`__
6205 feed reconstruction
6206 - ``NVD1``: the NVD JSON feed (deprecated)
6207
6208 In case of a malformed feed name, the ``NVD2`` feed is selected and an
6209 error is printed.
6210
6211 :term:`NVDCVE_API_KEY`
6212 The NVD API key used to retrieve data from the CVE database when
6213 using :ref:`ref-classes-cve-check`.
6214
6215 By default, no API key is used, which results in larger delays between API
6216 requests and limits the number of queries to the public rate limits posted
6217 at the `NVD developer's page <https://nvd.nist.gov/developers/start-here>`__.
6218
6219 NVD API keys can be requested through the
6220 `Request an API Key <https://nvd.nist.gov/developers/request-an-api-key>`__
6221 page. You can set this variable to the NVD API key in your ``local.conf`` file.
6222 Example::
6223
6224 NVDCVE_API_KEY = "fe753&7a2-1427-347d-23ff-b2e2b7ca5f3"
4875 6225
4876 :term:`OBJCOPY` 6226 :term:`OBJCOPY`
4877 The minimal command and arguments to run ``objcopy``. 6227 The minimal command and arguments to run :manpage:`objcopy <objcopy(1)>`.
4878 6228
4879 :term:`OBJDUMP` 6229 :term:`OBJDUMP`
4880 The minimal command and arguments to run ``objdump``. 6230 The minimal command and arguments to run :manpage:`objdump <objdump(1)>`.
4881 6231
4882 :term:`OE_BINCONFIG_EXTRA_MANGLE` 6232 :term:`OE_BINCONFIG_EXTRA_MANGLE`
4883 When inheriting the :ref:`binconfig <ref-classes-binconfig>` class, 6233 When inheriting the :ref:`ref-classes-binconfig` class,
4884 this variable specifies additional arguments passed to the "sed" 6234 this variable specifies additional arguments passed to the "sed"
4885 command. The sed command alters any paths in configuration scripts 6235 command. The sed command alters any paths in configuration scripts
4886 that have been set up during compilation. Inheriting this class 6236 that have been set up during compilation. Inheriting this class
@@ -4888,19 +6238,36 @@ system and gives an overview of their function and contents.
4888 ``sysroots/`` directory so that all builds that use the script will 6238 ``sysroots/`` directory so that all builds that use the script will
4889 use the correct directories for the cross compiling layout. 6239 use the correct directories for the cross compiling layout.
4890 6240
4891 See the ``meta/classes/binconfig.bbclass`` in the 6241 See the ``meta/classes-recipe/binconfig.bbclass`` in the
4892 :term:`Source Directory` for details on how this class 6242 :term:`Source Directory` for details on how this class
4893 applies these additional sed command arguments. For general 6243 applies these additional sed command arguments.
4894 information on the ``binconfig`` class, see the 6244
4895 ":ref:`binconfig.bbclass <ref-classes-binconfig>`" section. 6245 :term:`OE_FRAGMENTS`
4896 6246 The :term:`OE_FRAGMENTS` variable holds the list of :term:`Configuration
4897 :term:`OE_IMPORTS` 6247 Fragments <Configuration Fragment>` currently enabled for the build. For
4898 An internal variable used to tell the OpenEmbedded build system what 6248 details on how to use fragments, see the :doc:`/ref-manual/fragments`
4899 Python modules to import for every Python function run by the system. 6249 section of the Yocto Project Reference Manual.
4900 6250
4901 .. note:: 6251 :term:`OE_FRAGMENTS_BUILTIN`
4902 6252 The :term:`OE_FRAGMENTS_BUILTIN` variable holds the list of
4903 Do not set this variable. It is for internal use only. 6253 :term:`Built-in Fragments <Built-in Fragment>` available for being set with
6254 :oe_git:`bitbake-config-build </bitbake/tree/bin/bitbake-config-build>`.
6255 For details on how to use fragments, see the :doc:`/ref-manual/fragments`
6256 section of the Yocto Project Reference Manual.
6257
6258 :term:`OE_FRAGMENTS_METADATA_VARS`
6259 The :term:`OE_FRAGMENTS_METADATA_VARS` variable holds the list of
6260 variables that are required to set in a standard :term:`Configuration
6261 Fragment` file. In :term:`OpenEmbedded-Core (OE-Core)`, these variables
6262 are :term:`BB_CONF_FRAGMENT_SUMMARY` and
6263 :term:`BB_CONF_FRAGMENT_DESCRIPTION`.
6264
6265 :term:`OE_FRAGMENTS_PREFIX`
6266 The :term:`OE_FRAGMENTS_PREFIX` variable defines the prefix where
6267 :term:`BitBake` tries to locate :term:`Configuration Fragments
6268 <Configuration Fragment>` in :term:`layers <Layer>`. For details on how to
6269 use fragments, see the :doc:`/ref-manual/fragments` section of the Yocto
6270 Project Reference Manual.
4904 6271
4905 :term:`OE_INIT_ENV_SCRIPT` 6272 :term:`OE_INIT_ENV_SCRIPT`
4906 The name of the build environment setup script for the purposes of 6273 The name of the build environment setup script for the purposes of
@@ -4908,16 +6275,21 @@ system and gives an overview of their function and contents.
4908 value is "oe-init-build-env". 6275 value is "oe-init-build-env".
4909 6276
4910 If you use a custom script to set up your build environment, set the 6277 If you use a custom script to set up your build environment, set the
4911 ``OE_INIT_ENV_SCRIPT`` variable to its name. 6278 :term:`OE_INIT_ENV_SCRIPT` variable to its name.
6279
6280 :term:`OE_SHARED_UMASK`
6281 The :term:`OE_SHARED_UMASK` variable contains the :manpage:`umask`
6282 definition for shared files (for example files in :term:`SSTATE_DIR` or
6283 :term:`DL_DIR`).
4912 6284
4913 :term:`OE_TERMINAL` 6285 :term:`OE_TERMINAL`
4914 Controls how the OpenEmbedded build system spawns interactive 6286 Controls how the OpenEmbedded build system spawns interactive
4915 terminals on the host development system (e.g. using the BitBake 6287 terminals on the host development system (e.g. using the BitBake
4916 command with the ``-c devshell`` command-line option). For more 6288 command with the ``-c devshell`` command-line option). For more
4917 information, see the ":ref:`dev-manual/common-tasks:using a development shell`" section in 6289 information, see the ":ref:`dev-manual/development-shell:using a development shell`" section in
4918 the Yocto Project Development Tasks Manual. 6290 the Yocto Project Development Tasks Manual.
4919 6291
4920 You can use the following values for the ``OE_TERMINAL`` variable: 6292 You can use the following values for the :term:`OE_TERMINAL` variable:
4921 6293
4922 - auto 6294 - auto
4923 - gnome 6295 - gnome
@@ -4927,11 +6299,42 @@ system and gives an overview of their function and contents.
4927 - konsole 6299 - konsole
4928 - none 6300 - none
4929 6301
6302 :term:`OECMAKE_GENERATOR`
6303 A variable for the :ref:`ref-classes-cmake` class, allowing to choose
6304 which back-end will be generated by CMake to build an application.
6305
6306 By default, this variable is set to ``Ninja``, which is faster than GNU
6307 make, but if building is broken with Ninja, a recipe can use this
6308 variable to use GNU make instead::
6309
6310 OECMAKE_GENERATOR = "Unix Makefiles"
6311
6312 :term:`OEQA_REPRODUCIBLE_TEST_LEAF_TARGETS`
6313 Set build target(s) for build reproducibility testing but activate
6314 :ref:`shared state <overview-manual/concepts:shared state cache>` build
6315 for most dependencies (i.e. the ones explicitly listed in DEPENDS, which
6316 may not be all dependencies, c.f. [depends] varflags, PACKAGE_DEPENDS and
6317 other implementations). See :doc:`/test-manual/reproducible-builds`.
6318
6319 :term:`OEQA_REPRODUCIBLE_TEST_PACKAGE`
6320 Set the package manager(s) for build reproducibility testing.
6321 See :yocto_git:`reproducible.py </poky/tree/meta/lib/oeqa/selftest/cases/reproducible.py>`
6322 and :doc:`/test-manual/reproducible-builds`.
6323
6324 :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS`
6325 Set build targets which can be rebuilt using :ref:`shared state <overview-manual/concepts:shared state cache>`
6326 when running build reproducibility tests. See :doc:`/test-manual/reproducible-builds`.
6327
6328 :term:`OEQA_REPRODUCIBLE_TEST_TARGET`
6329 Set build target for build reproducibility testing. By default
6330 all available recipes are compiled with "bitbake world", see also :term:`EXCLUDE_FROM_WORLD`
6331 and :doc:`/test-manual/reproducible-builds`.
6332
4930 :term:`OEROOT` 6333 :term:`OEROOT`
4931 The directory from which the top-level build environment setup script 6334 The directory from which the top-level build environment setup script
4932 is sourced. The Yocto Project provides a top-level build environment 6335 is sourced. The Yocto Project provides a top-level build environment
4933 setup script: :ref:`structure-core-script`. When you run this 6336 setup script: :ref:`structure-core-script`. When you run this
4934 script, the ``OEROOT`` variable resolves to the directory that 6337 script, the :term:`OEROOT` variable resolves to the directory that
4935 contains the script. 6338 contains the script.
4936 6339
4937 For additional information on how this variable is used, see the 6340 For additional information on how this variable is used, see the
@@ -4947,53 +6350,143 @@ system and gives an overview of their function and contents.
4947 default by setting the variable in a custom distribution 6350 default by setting the variable in a custom distribution
4948 configuration file. 6351 configuration file.
4949 6352
6353 :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS`
6354 Specifies extra parameters for the ``opkg-make-index`` command.
6355
6356 :term:`OPKGBUILDCMD`
6357 The variable :term:`OPKGBUILDCMD` specifies the command used to build opkg
6358 packages when using the :ref:`ref-classes-package_ipk` class. It is
6359 defined in :ref:`ref-classes-package_ipk` as::
6360
6361 OPKGBUILDCMD ??= 'opkg-build -Z zstd -a "${ZSTD_DEFAULTS}"'
6362
6363 :term:`OVERLAYFS_ETC_DEVICE`
6364 When the :ref:`ref-classes-overlayfs-etc` class is
6365 inherited, specifies the device to be mounted for the read/write
6366 layer of ``/etc``. There is no default, so you must set this if you
6367 wish to enable :ref:`ref-classes-overlayfs-etc`, for
6368 example, assuming ``/dev/mmcblk0p2`` was the desired device::
6369
6370 OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2"
6371
6372 :term:`OVERLAYFS_ETC_EXPOSE_LOWER`
6373 When the :ref:`ref-classes-overlayfs-etc` class is
6374 inherited, if set to "1" then a read-only access to the original
6375 ``/etc`` content will be provided as a ``lower/`` subdirectory of
6376 :term:`OVERLAYFS_ETC_MOUNT_POINT`. The default value is "0".
6377
6378 :term:`OVERLAYFS_ETC_FSTYPE`
6379 When the :ref:`ref-classes-overlayfs-etc` class is
6380 inherited, specifies the file system type for the read/write
6381 layer of ``/etc``. There is no default, so you must set this if you
6382 wish to enable :ref:`ref-classes-overlayfs-etc`,
6383 for example, assuming the file system is ext4::
6384
6385 OVERLAYFS_ETC_FSTYPE = "ext4"
6386
6387 :term:`OVERLAYFS_ETC_MOUNT_OPTIONS`
6388 When the :ref:`ref-classes-overlayfs-etc` class is
6389 inherited, specifies the mount options for the read-write layer.
6390 The default value is "defaults".
6391
6392 :term:`OVERLAYFS_ETC_MOUNT_POINT`
6393 When the :ref:`ref-classes-overlayfs-etc` class is
6394 inherited, specifies the parent mount path for the filesystem layers.
6395 There is no default, so you must set this if you wish to enable
6396 :ref:`ref-classes-overlayfs-etc`, for example if the desired path is
6397 "/data"::
6398
6399 OVERLAYFS_ETC_MOUNT_POINT = "/data"
6400
6401 :term:`OVERLAYFS_ETC_USE_ORIG_INIT_NAME`
6402 When the :ref:`ref-classes-overlayfs-etc` class is inherited, controls
6403 how the generated init will be named. For more information, see the
6404 :ref:`ref-classes-overlayfs-etc` class documentation. The default value
6405 is "1".
6406
6407 :term:`OVERLAYFS_MOUNT_POINT`
6408 When inheriting the :ref:`ref-classes-overlayfs` class,
6409 specifies mount point(s) to be used. For example::
6410
6411 OVERLAYFS_MOUNT_POINT[data] = "/data"
6412
6413 The assumes you have a ``data.mount`` systemd unit defined elsewhere in
6414 your BSP (e.g. in ``systemd-machine-units`` recipe) and it is installed
6415 into the image. For more information see :ref:`ref-classes-overlayfs`.
6416
6417 .. note::
6418
6419 Although the :ref:`ref-classes-overlayfs` class is
6420 inherited by individual recipes, :term:`OVERLAYFS_MOUNT_POINT`
6421 should be set in your machine configuration.
6422
6423 :term:`OVERLAYFS_QA_SKIP`
6424 When inheriting the :ref:`ref-classes-overlayfs` class,
6425 provides the ability to disable QA checks for particular overlayfs
6426 mounts. For example::
6427
6428 OVERLAYFS_QA_SKIP[data] = "mount-configured"
6429
6430 .. note::
6431
6432 Although the :ref:`ref-classes-overlayfs` class is
6433 inherited by individual recipes, :term:`OVERLAYFS_QA_SKIP`
6434 should be set in your machine configuration.
6435
6436 :term:`OVERLAYFS_WRITABLE_PATHS`
6437 When inheriting the :ref:`ref-classes-overlayfs` class,
6438 specifies writable paths used at runtime for the recipe. For
6439 example::
6440
6441 OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application"
6442
4950 :term:`OVERRIDES` 6443 :term:`OVERRIDES`
4951 A colon-separated list of overrides that currently apply. Overrides 6444 A colon-separated list of overrides that currently apply. Overrides
4952 are a BitBake mechanism that allows variables to be selectively 6445 are a BitBake mechanism that allows variables to be selectively
4953 overridden at the end of parsing. The set of overrides in 6446 overridden at the end of parsing. The set of overrides in
4954 ``OVERRIDES`` represents the "state" during building, which includes 6447 :term:`OVERRIDES` represents the "state" during building, which includes
4955 the current recipe being built, the machine for which it is being 6448 the current recipe being built, the machine for which it is being
4956 built, and so forth. 6449 built, and so forth.
4957 6450
4958 As an example, if the string "an-override" appears as an element in 6451 As an example, if the string "an-override" appears as an element in
4959 the colon-separated list in ``OVERRIDES``, then the following 6452 the colon-separated list in :term:`OVERRIDES`, then the following
4960 assignment will override ``FOO`` with the value "overridden" at the 6453 assignment will override ``FOO`` with the value "overridden" at the
4961 end of parsing: 6454 end of parsing::
4962 ::
4963 6455
4964 FOO_an-override = "overridden" 6456 FOO:an-override = "overridden"
4965 6457
4966 See the 6458 See the
4967 ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`" 6459 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
4968 section in the BitBake User Manual for more information on the 6460 section in the BitBake User Manual for more information on the
4969 overrides mechanism. 6461 overrides mechanism.
4970 6462
4971 The default value of ``OVERRIDES`` includes the values of the 6463 The default value of :term:`OVERRIDES` includes the values of the
4972 :term:`CLASSOVERRIDE`, 6464 :term:`CLASSOVERRIDE`,
4973 :term:`MACHINEOVERRIDES`, and 6465 :term:`MACHINEOVERRIDES`, and
4974 :term:`DISTROOVERRIDES` variables. Another 6466 :term:`DISTROOVERRIDES` variables. Another
4975 important override included by default is ``pn-${PN}``. This override 6467 important override included by default is ``pn-${PN}``. This override
4976 allows variables to be set for a single recipe within configuration 6468 allows variables to be set for a single recipe within configuration
4977 (``.conf``) files. Here is an example: 6469 (``.conf``) files. Here is an example::
4978 ::
4979 6470
4980 FOO_pn-myrecipe = "myrecipe-specific value" 6471 FOO:pn-myrecipe = "myrecipe-specific value"
4981 6472
4982 .. note:: 6473 .. note::
4983 6474
4984 An easy way to see what overrides apply is to search for ``OVERRIDES`` 6475 An easy way to see what overrides apply is to search for :term:`OVERRIDES`
4985 in the output of the ``bitbake -e`` command. See the 6476 in the output of the ``bitbake -e`` command. See the
4986 ":ref:`dev-manual/common-tasks:viewing variable values`" section in the Yocto 6477 ":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto
4987 Project Development Tasks Manual for more information. 6478 Project Development Tasks Manual for more information.
4988 6479
4989 :term:`P` 6480 :term:`P`
4990 The recipe name and version. ``P`` is comprised of the following: 6481 The recipe name and version. :term:`P` is comprised of the following::
4991 ::
4992 6482
4993 ${PN}-${PV} 6483 ${PN}-${PV}
4994 6484
6485 :term:`P4DIR`
6486 See :term:`bitbake:P4DIR` in the BitBake manual.
6487
4995 :term:`PACKAGE_ADD_METADATA` 6488 :term:`PACKAGE_ADD_METADATA`
4996 This variable defines additional metdata to add to packages. 6489 This variable defines additional metadata to add to packages.
4997 6490
4998 You may find you need to inject additional metadata into packages. 6491 You may find you need to inject additional metadata into packages.
4999 This variable allows you to do that by setting the injected data as 6492 This variable allows you to do that by setting the injected data as
@@ -5005,7 +6498,7 @@ system and gives an overview of their function and contents.
5005 specific by using the package name as a suffix. 6498 specific by using the package name as a suffix.
5006 6499
5007 You can find out more about applying this variable in the 6500 You can find out more about applying this variable in the
5008 ":ref:`dev-manual/common-tasks:adding custom metadata to packages`" 6501 ":ref:`dev-manual/packages:adding custom metadata to packages`"
5009 section in the Yocto Project Development Tasks Manual. 6502 section in the Yocto Project Development Tasks Manual.
5010 6503
5011 :term:`PACKAGE_ARCH` 6504 :term:`PACKAGE_ARCH`
@@ -5023,9 +6516,8 @@ system and gives an overview of their function and contents.
5023 6516
5024 However, if your recipe's output packages are built specific to the 6517 However, if your recipe's output packages are built specific to the
5025 target machine rather than generally for the architecture of the 6518 target machine rather than generally for the architecture of the
5026 machine, you should set ``PACKAGE_ARCH`` to the value of 6519 machine, you should set :term:`PACKAGE_ARCH` to the value of
5027 :term:`MACHINE_ARCH` in the recipe as follows: 6520 :term:`MACHINE_ARCH` in the recipe as follows::
5028 ::
5029 6521
5030 PACKAGE_ARCH = "${MACHINE_ARCH}" 6522 PACKAGE_ARCH = "${MACHINE_ARCH}"
5031 6523
@@ -5033,11 +6525,11 @@ system and gives an overview of their function and contents.
5033 Specifies a list of architectures compatible with the target machine. 6525 Specifies a list of architectures compatible with the target machine.
5034 This variable is set automatically and should not normally be 6526 This variable is set automatically and should not normally be
5035 hand-edited. Entries are separated using spaces and listed in order 6527 hand-edited. Entries are separated using spaces and listed in order
5036 of priority. The default value for ``PACKAGE_ARCHS`` is "all any 6528 of priority. The default value for :term:`PACKAGE_ARCHS` is "all any
5037 noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}". 6529 noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".
5038 6530
5039 :term:`PACKAGE_BEFORE_PN` 6531 :term:`PACKAGE_BEFORE_PN`
5040 Enables easily adding packages to ``PACKAGES`` before ``${PN}`` so 6532 Enables easily adding packages to :term:`PACKAGES` before ``${PN}`` so
5041 that those added packages can pick up files that would normally be 6533 that those added packages can pick up files that would normally be
5042 included in the default package. 6534 included in the default package.
5043 6535
@@ -5048,21 +6540,14 @@ system and gives an overview of their function and contents.
5048 OpenEmbedded build system uses when packaging data. 6540 OpenEmbedded build system uses when packaging data.
5049 6541
5050 You can provide one or more of the following arguments for the 6542 You can provide one or more of the following arguments for the
5051 variable: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk 6543 variable::
5052 package_tar"
5053 6544
5054 .. note:: 6545 PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
5055
5056 While it is a legal option, the ``package_tar``
5057 class has limited functionality due to no support for package
5058 dependencies by that backend. Therefore, it is recommended that
5059 you do not use it.
5060 6546
5061 The build system uses only the first argument in the list as the 6547 The build system uses only the first argument in the list as the
5062 package manager when creating your image or SDK. However, packages 6548 package manager when creating your image or SDK. However, packages
5063 will be created using any additional packaging classes you specify. 6549 will be created using any additional packaging classes you specify.
5064 For example, if you use the following in your ``local.conf`` file: 6550 For example, if you use the following in your ``local.conf`` file::
5065 ::
5066 6551
5067 PACKAGE_CLASSES ?= "package_ipk" 6552 PACKAGE_CLASSES ?= "package_ipk"
5068 6553
@@ -5071,66 +6556,63 @@ system and gives an overview of their function and contents.
5071 6556
5072 For information on packaging and build performance effects as a 6557 For information on packaging and build performance effects as a
5073 result of the package manager in use, see the 6558 result of the package manager in use, see the
5074 ":ref:`package.bbclass <ref-classes-package>`" section. 6559 ":ref:`ref-classes-package`" section.
5075 6560
5076 :term:`PACKAGE_DEBUG_SPLIT_STYLE` 6561 :term:`PACKAGE_DEBUG_SPLIT_STYLE`
5077 Determines how to split up the binary and debug information when 6562 Determines how to split up and package debug and source information
5078 creating ``*-dbg`` packages to be used with the GNU Project Debugger 6563 when creating debugging packages to be used with the GNU Project
5079 (GDB). 6564 Debugger (GDB). In general, based on the value of this variable,
5080 6565 you can combine the source and debug info in a single package,
5081 With the ``PACKAGE_DEBUG_SPLIT_STYLE`` variable, you can control 6566 you can break out the source into a separate package that can be
5082 where debug information, which can include or exclude source files, 6567 installed independently, or you can choose to not have the source
5083 is stored: 6568 packaged at all.
5084 6569
5085 - ".debug": Debug symbol files are placed next to the binary in a 6570 The possible values of :term:`PACKAGE_DEBUG_SPLIT_STYLE` variable:
5086 ``.debug`` directory on the target. For example, if a binary is 6571
5087 installed into ``/bin``, the corresponding debug symbol files are 6572 - "``.debug``": All debugging and source info is placed in a single
5088 installed in ``/bin/.debug``. Source files are placed in 6573 ``*-dbg`` package; debug symbol files are placed next to the
5089 ``/usr/src/debug``. 6574 binary in a ``.debug`` directory so that, if a binary is installed
5090 6575 into ``/bin``, the corresponding debug symbol file is installed
5091 - "debug-file-directory": Debug symbol files are placed under 6576 in ``/bin/.debug``. Source files are installed in the same ``*-dbg``
5092 ``/usr/lib/debug`` on the target, and separated by the path from 6577 package under ``/usr/src/debug``.
5093 where the binary is installed. For example, if a binary is 6578
5094 installed in ``/bin``, the corresponding debug symbols are 6579 - "``debug-file-directory``": As above, all debugging and source info
5095 installed in ``/usr/lib/debug/bin``. Source files are placed in 6580 is placed in a single ``*-dbg`` package; debug symbol files are
5096 ``/usr/src/debug``. 6581 placed entirely under the directory ``/usr/lib/debug`` and separated
5097 6582 by the path from where the binary is installed, so that if a binary
5098 - "debug-without-src": The same behavior as ".debug" previously 6583 is installed in ``/bin``, the corresponding debug symbols are installed
5099 described with the exception that no source files are installed. 6584 in ``/usr/lib/debug/bin``, and so on. As above, source is installed
5100 6585 in the same package under ``/usr/src/debug``.
5101 - "debug-with-srcpkg": The same behavior as ".debug" previously 6586
5102 described with the exception that all source files are placed in a 6587 - "``debug-with-srcpkg``": Debugging info is placed in the standard
5103 separate ``*-src`` pkg. This is the default behavior. 6588 ``*-dbg`` package as with the ``.debug`` value, while source is
6589 placed in a separate ``*-src`` package, which can be installed
6590 independently. This is the default setting for this variable,
6591 as defined in Poky's ``bitbake.conf`` file.
6592
6593 - "``debug-without-src``": The same behavior as with the ``.debug``
6594 setting, but no source is packaged at all.
5104 6595
5105 You can find out more about debugging using GDB by reading the 6596 .. note::
5106 ":ref:`dev-manual/common-tasks:debugging with the gnu project debugger (gdb) remotely`" section
5107 in the Yocto Project Development Tasks Manual.
5108 6597
5109 :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` 6598 Much of the above package splitting can be overridden via
5110 Prevents specific packages from being installed when you are 6599 use of the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable.
5111 installing complementary packages.
5112 6600
5113 You might find that you want to prevent installing certain packages 6601 You can find out more about debugging using GDB by reading the
5114 when you are installing complementary packages. For example, if you 6602 ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section
5115 are using :term:`IMAGE_FEATURES` to install 6603 in the Yocto Project Development Tasks Manual.
5116 ``dev-pkgs``, you might not want to install all packages from a
5117 particular multilib. If you find yourself in this situation, you can
5118 use the ``PACKAGE_EXCLUDE_COMPLEMENTARY`` variable to specify regular
5119 expressions to match the packages you want to exclude.
5120 6604
5121 :term:`PACKAGE_EXCLUDE` 6605 :term:`PACKAGE_EXCLUDE`
5122 Lists packages that should not be installed into an image. For 6606 Lists packages that should not be installed into an image. For
5123 example: 6607 example::
5124 ::
5125 6608
5126 PACKAGE_EXCLUDE = "package_name package_name package_name ..." 6609 PACKAGE_EXCLUDE = "package_name package_name package_name ..."
5127 6610
5128 You can set this variable globally in your ``local.conf`` file or you 6611 You can set this variable globally in your ``local.conf`` file or you
5129 can attach it to a specific image recipe by using the recipe name 6612 can attach it to a specific image recipe by using the recipe name
5130 override: 6613 override::
5131 ::
5132 6614
5133 PACKAGE_EXCLUDE_pn-target_image = "package_name" 6615 PACKAGE_EXCLUDE:pn-target_image = "package_name"
5134 6616
5135 If you choose to not install a package using this variable and some 6617 If you choose to not install a package using this variable and some
5136 other package is dependent on it (i.e. listed in a recipe's 6618 other package is dependent on it (i.e. listed in a recipe's
@@ -5140,13 +6622,25 @@ system and gives an overview of their function and contents.
5140 an iterative development process to remove specific components from a 6622 an iterative development process to remove specific components from a
5141 system. 6623 system.
5142 6624
5143 Support for this variable exists only when using the IPK and RPM 6625 This variable is supported only when using the IPK and RPM
5144 packaging backend. Support does not exist for DEB. 6626 packaging backends. DEB is not supported.
5145 6627
5146 See the :term:`NO_RECOMMENDATIONS` and the 6628 See the :term:`NO_RECOMMENDATIONS` and the
5147 :term:`BAD_RECOMMENDATIONS` variables for 6629 :term:`BAD_RECOMMENDATIONS` variables for
5148 related information. 6630 related information.
5149 6631
6632 :term:`PACKAGE_EXCLUDE_COMPLEMENTARY`
6633 Prevents specific packages from being installed when you are
6634 installing complementary packages.
6635
6636 You might find that you want to prevent installing certain packages
6637 when you are installing complementary packages. For example, if you
6638 are using :term:`IMAGE_FEATURES` to install
6639 ``dev-pkgs``, you might not want to install all packages from a
6640 particular multilib. If you find yourself in this situation, you can
6641 use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular
6642 expressions to match the packages you want to exclude.
6643
5150 :term:`PACKAGE_EXTRA_ARCHS` 6644 :term:`PACKAGE_EXTRA_ARCHS`
5151 Specifies the list of architectures compatible with the device CPU. 6645 Specifies the list of architectures compatible with the device CPU.
5152 This variable is useful when you build for several different devices 6646 This variable is useful when you build for several different devices
@@ -5155,7 +6649,7 @@ system and gives an overview of their function and contents.
5155 :term:`PACKAGE_FEED_ARCHS` 6649 :term:`PACKAGE_FEED_ARCHS`
5156 Optionally specifies the package architectures used as part of the 6650 Optionally specifies the package architectures used as part of the
5157 package feed URIs during the build. When used, the 6651 package feed URIs during the build. When used, the
5158 ``PACKAGE_FEED_ARCHS`` variable is appended to the final package feed 6652 :term:`PACKAGE_FEED_ARCHS` variable is appended to the final package feed
5159 URI, which is constructed using the 6653 URI, which is constructed using the
5160 :term:`PACKAGE_FEED_URIS` and 6654 :term:`PACKAGE_FEED_URIS` and
5161 :term:`PACKAGE_FEED_BASE_PATHS` 6655 :term:`PACKAGE_FEED_BASE_PATHS`
@@ -5163,17 +6657,16 @@ system and gives an overview of their function and contents.
5163 6657
5164 .. note:: 6658 .. note::
5165 6659
5166 You can use the ``PACKAGE_FEED_ARCHS`` 6660 You can use the :term:`PACKAGE_FEED_ARCHS`
5167 variable to whitelist specific package architectures. If you do 6661 variable to allow specific package architectures. If you do
5168 not need to whitelist specific architectures, which is a common 6662 not need to allow specific architectures, which is a common
5169 case, you can omit this variable. Omitting the variable results in 6663 case, you can omit this variable. Omitting the variable results in
5170 all available architectures for the current machine being included 6664 all available architectures for the current machine being included
5171 into remote package feeds. 6665 into remote package feeds.
5172 6666
5173 Consider the following example where the ``PACKAGE_FEED_URIS``, 6667 Consider the following example where the :term:`PACKAGE_FEED_URIS`,
5174 ``PACKAGE_FEED_BASE_PATHS``, and ``PACKAGE_FEED_ARCHS`` variables are 6668 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
5175 defined in your ``local.conf`` file: 6669 defined in your ``local.conf`` file::
5176 ::
5177 6670
5178 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6671 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
5179 https://example.com/packagerepos/updates" 6672 https://example.com/packagerepos/updates"
@@ -5195,15 +6688,14 @@ system and gives an overview of their function and contents.
5195 6688
5196 :term:`PACKAGE_FEED_BASE_PATHS` 6689 :term:`PACKAGE_FEED_BASE_PATHS`
5197 Specifies the base path used when constructing package feed URIs. The 6690 Specifies the base path used when constructing package feed URIs. The
5198 ``PACKAGE_FEED_BASE_PATHS`` variable makes up the middle portion of a 6691 :term:`PACKAGE_FEED_BASE_PATHS` variable makes up the middle portion of a
5199 package feed URI used by the OpenEmbedded build system. The base path 6692 package feed URI used by the OpenEmbedded build system. The base path
5200 lies between the :term:`PACKAGE_FEED_URIS` 6693 lies between the :term:`PACKAGE_FEED_URIS`
5201 and :term:`PACKAGE_FEED_ARCHS` variables. 6694 and :term:`PACKAGE_FEED_ARCHS` variables.
5202 6695
5203 Consider the following example where the ``PACKAGE_FEED_URIS``, 6696 Consider the following example where the :term:`PACKAGE_FEED_URIS`,
5204 ``PACKAGE_FEED_BASE_PATHS``, and ``PACKAGE_FEED_ARCHS`` variables are 6697 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
5205 defined in your ``local.conf`` file: 6698 defined in your ``local.conf`` file::
5206 ::
5207 6699
5208 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6700 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
5209 https://example.com/packagerepos/updates" 6701 https://example.com/packagerepos/updates"
@@ -5226,14 +6718,13 @@ system and gives an overview of their function and contents.
5226 :term:`PACKAGE_FEED_URIS` 6718 :term:`PACKAGE_FEED_URIS`
5227 Specifies the front portion of the package feed URI used by the 6719 Specifies the front portion of the package feed URI used by the
5228 OpenEmbedded build system. Each final package feed URI is comprised 6720 OpenEmbedded build system. Each final package feed URI is comprised
5229 of ``PACKAGE_FEED_URIS``, 6721 of :term:`PACKAGE_FEED_URIS`,
5230 :term:`PACKAGE_FEED_BASE_PATHS`, and 6722 :term:`PACKAGE_FEED_BASE_PATHS`, and
5231 :term:`PACKAGE_FEED_ARCHS` variables. 6723 :term:`PACKAGE_FEED_ARCHS` variables.
5232 6724
5233 Consider the following example where the ``PACKAGE_FEED_URIS``, 6725 Consider the following example where the :term:`PACKAGE_FEED_URIS`,
5234 ``PACKAGE_FEED_BASE_PATHS``, and ``PACKAGE_FEED_ARCHS`` variables are 6726 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are
5235 defined in your ``local.conf`` file: 6727 defined in your ``local.conf`` file::
5236 ::
5237 6728
5238 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6729 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
5239 https://example.com/packagerepos/updates" 6730 https://example.com/packagerepos/updates"
@@ -5258,16 +6749,16 @@ system and gives an overview of their function and contents.
5258 installation into the image. 6749 installation into the image.
5259 6750
5260 Because the package manager controls actual installation of all 6751 Because the package manager controls actual installation of all
5261 packages, the list of packages passed using ``PACKAGE_INSTALL`` is 6752 packages, the list of packages passed using :term:`PACKAGE_INSTALL` is
5262 not the final list of packages that are actually installed. This 6753 not the final list of packages that are actually installed. This
5263 variable is internal to the image construction code. Consequently, in 6754 variable is internal to the image construction code. Consequently, in
5264 general, you should use the 6755 general, you should use the
5265 :term:`IMAGE_INSTALL` variable to specify 6756 :term:`IMAGE_INSTALL` variable to specify
5266 packages for installation. The exception to this is when working with 6757 packages for installation. The exception to this is when working with
5267 the :ref:`core-image-minimal-initramfs <ref-manual/images:images>` 6758 the :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
5268 image. When working with an initial RAM filesystem (initramfs) image, 6759 image. When working with an initial RAM filesystem (:term:`Initramfs`) image,
5269 use the ``PACKAGE_INSTALL`` variable. For information on creating an 6760 use the :term:`PACKAGE_INSTALL` variable. For information on creating an
5270 initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section 6761 :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
5271 in the Yocto Project Development Tasks Manual. 6762 in the Yocto Project Development Tasks Manual.
5272 6763
5273 :term:`PACKAGE_INSTALL_ATTEMPTONLY` 6764 :term:`PACKAGE_INSTALL_ATTEMPTONLY`
@@ -5284,22 +6775,21 @@ system and gives an overview of their function and contents.
5284 :term:`PACKAGE_WRITE_DEPS` 6775 :term:`PACKAGE_WRITE_DEPS`
5285 Specifies a list of dependencies for post-installation and 6776 Specifies a list of dependencies for post-installation and
5286 pre-installation scripts on native/cross tools. If your 6777 pre-installation scripts on native/cross tools. If your
5287 post-installation or pre-installation script can execute at rootfs 6778 post-installation or pre-installation script can execute at root filesystem
5288 creation time rather than on the target but depends on a native tool 6779 creation time rather than on the target but depends on a native tool
5289 in order to execute, you need to list the tools in 6780 in order to execute, you need to list the tools in
5290 ``PACKAGE_WRITE_DEPS``. 6781 :term:`PACKAGE_WRITE_DEPS`.
5291 6782
5292 For information on running post-installation scripts, see the 6783 For information on running post-installation scripts, see the
5293 ":ref:`dev-manual/common-tasks:post-installation scripts`" 6784 ":ref:`dev-manual/new-recipe:post-installation scripts`"
5294 section in the Yocto Project Development Tasks Manual. 6785 section in the Yocto Project Development Tasks Manual.
5295 6786
5296 :term:`PACKAGECONFIG` 6787 :term:`PACKAGECONFIG`
5297 This variable provides a means of enabling or disabling features of a 6788 This variable provides a means of enabling or disabling features of a
5298 recipe on a per-recipe basis. ``PACKAGECONFIG`` blocks are defined in 6789 recipe on a per-recipe basis. :term:`PACKAGECONFIG` blocks are defined in
5299 recipes when you specify features and then arguments that define 6790 recipes when you specify features and then arguments that define
5300 feature behaviors. Here is the basic block structure (broken over 6791 feature behaviors. Here is the basic block structure (broken over
5301 multiple lines for readability): 6792 multiple lines for readability)::
5302 ::
5303 6793
5304 PACKAGECONFIG ??= "f1 f2 f3 ..." 6794 PACKAGECONFIG ??= "f1 f2 f3 ..."
5305 PACKAGECONFIG[f1] = "\ 6795 PACKAGECONFIG[f1] = "\
@@ -5312,117 +6802,140 @@ system and gives an overview of their function and contents.
5312 PACKAGECONFIG[f2] = "\ 6802 PACKAGECONFIG[f2] = "\
5313 ... and so on and so on ... 6803 ... and so on and so on ...
5314 6804
5315 The ``PACKAGECONFIG`` variable itself specifies a space-separated 6805 The :term:`PACKAGECONFIG` variable itself specifies a space-separated
5316 list of the features to enable. Following the features, you can 6806 list of the features to enable. Following the features, you can
5317 determine the behavior of each feature by providing up to six 6807 determine the behavior of each feature by providing up to six
5318 order-dependent arguments, which are separated by commas. You can 6808 order-dependent arguments, which are separated by commas. You can
5319 omit any argument you like but must retain the separating commas. The 6809 omit any argument you like but must retain the separating commas. The
5320 order is important and specifies the following: 6810 order is important and specifies the following:
5321 6811
5322 1. Extra arguments that should be added to the configure script 6812 #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
5323 argument list (:term:`EXTRA_OECONF` or 6813 if the feature is enabled.
5324 :term:`PACKAGECONFIG_CONFARGS`) if
5325 the feature is enabled.
5326 6814
5327 2. Extra arguments that should be added to ``EXTRA_OECONF`` or 6815 #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
5328 ``PACKAGECONFIG_CONFARGS`` if the feature is disabled. 6816 if the feature is disabled.
5329 6817
5330 3. Additional build dependencies (:term:`DEPENDS`) 6818 #. Additional build dependencies (:term:`DEPENDS`)
5331 that should be added if the feature is enabled. 6819 that should be added if the feature is enabled.
5332 6820
5333 4. Additional runtime dependencies (:term:`RDEPENDS`) 6821 #. Additional runtime dependencies (:term:`RDEPENDS`)
5334 that should be added if the feature is enabled. 6822 that should be added if the feature is enabled.
5335 6823
5336 5. Additional runtime recommendations 6824 #. Additional runtime recommendations
5337 (:term:`RRECOMMENDS`) that should be added if 6825 (:term:`RRECOMMENDS`) that should be added if
5338 the feature is enabled. 6826 the feature is enabled.
5339 6827
5340 6. Any conflicting (that is, mutually exclusive) ``PACKAGECONFIG`` 6828 #. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG`
5341 settings for this feature. 6829 settings for this feature.
5342 6830
5343 Consider the following ``PACKAGECONFIG`` block taken from the 6831 Consider the following :term:`PACKAGECONFIG` block taken from the
5344 ``librsvg`` recipe. In this example the feature is ``gtk``, which has 6832 ``librsvg`` recipe. In this example the feature is ``gtk``, which has
5345 three arguments that determine the feature's behavior. 6833 three arguments that determine the feature's behavior::
5346 ::
5347 6834
5348 PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3" 6835 PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
5349 6836
5350 The 6837 The
5351 ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is 6838 ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is
5352 enabled. In this case, ``--with-gtk3`` is added to the configure 6839 enabled. In this case, ``--with-gtk3`` is added to the configure
5353 script argument list and ``gtk+3`` is added to ``DEPENDS``. On the 6840 script argument list and ``gtk+3`` is added to :term:`DEPENDS`. On the
5354 other hand, if the feature is disabled say through a ``.bbappend`` 6841 other hand, if the feature is disabled say through a ``.bbappend``
5355 file in another layer, then the second argument ``--without-gtk3`` is 6842 file in another layer, then the second argument ``--without-gtk3`` is
5356 added to the configure script instead. 6843 added to the configure script instead.
5357 6844
5358 The basic ``PACKAGECONFIG`` structure previously described holds true 6845 The basic :term:`PACKAGECONFIG` structure previously described holds true
5359 regardless of whether you are creating a block or changing a block. 6846 regardless of whether you are creating a block or changing a block.
5360 When creating a block, use the structure inside your recipe. 6847 When creating a block, use the structure inside your recipe.
5361 6848
5362 If you want to change an existing ``PACKAGECONFIG`` block, you can do 6849 If you want to change an existing :term:`PACKAGECONFIG` block, you can do
5363 so one of two ways: 6850 so one of two ways:
5364 6851
5365 - *Append file:* Create an append file named 6852 - *Append file:* Create an append file named
5366 recipename\ ``.bbappend`` in your layer and override the value of 6853 ``recipename.bbappend`` in your layer and override the value of
5367 ``PACKAGECONFIG``. You can either completely override the 6854 :term:`PACKAGECONFIG`. You can either completely override the
5368 variable: 6855 variable::
5369 ::
5370 6856
5371 PACKAGECONFIG = "f4 f5" 6857 PACKAGECONFIG = "f4 f5"
5372 6858
5373 Or, you can just append the variable: 6859 Or, you can just append the variable::
5374 ::
5375 6860
5376 PACKAGECONFIG_append = " f4" 6861 PACKAGECONFIG:append = " f4"
5377 6862
5378 - *Configuration file:* This method is identical to changing the 6863 - *Configuration file:* This method is identical to changing the
5379 block through an append file except you edit your ``local.conf`` 6864 block through an append file except you edit your ``local.conf``
5380 or ``mydistro.conf`` file. As with append files previously 6865 or ``mydistro.conf`` file. As with append files previously
5381 described, you can either completely override the variable: 6866 described, you can either completely override the variable::
5382 :: 6867
6868 PACKAGECONFIG:pn-recipename = "f4 f5"
6869
6870 Or, you can just amend the variable::
6871
6872 PACKAGECONFIG:append:pn-recipename = " f4"
5383 6873
5384 PACKAGECONFIG_pn-recipename = "f4 f5" 6874 Consider the following example of a :ref:`ref-classes-cmake` recipe with a systemd service
6875 in which :term:`PACKAGECONFIG` is used to transform the systemd service
6876 into a feature that can be easily enabled or disabled via :term:`PACKAGECONFIG`::
5385 6877
5386 Or, you can just amend the variable: 6878 example.c
5387 :: 6879 example.service
6880 CMakeLists.txt
5388 6881
5389 PACKAGECONFIG_append_pn-recipename = " f4" 6882 The ``CMakeLists.txt`` file contains::
6883
6884 if(WITH_SYSTEMD)
6885 install(FILES ${PROJECT_SOURCE_DIR}/example.service DESTINATION /etc/systemd/systemd)
6886 endif(WITH_SYSTEMD)
6887
6888 In order to enable the installation of ``example.service`` we need to
6889 ensure that ``-DWITH_SYSTEMD=ON`` is passed to the ``cmake`` command
6890 execution. Recipes that have ``CMakeLists.txt`` generally inherit the
6891 :ref:`ref-classes-cmake` class, that runs ``cmake`` with
6892 :term:`EXTRA_OECMAKE`, which :term:`PACKAGECONFIG_CONFARGS` will be
6893 appended to. Now, knowing that :term:`PACKAGECONFIG_CONFARGS` is
6894 automatically filled with either the first or second element of
6895 :term:`PACKAGECONFIG` flag value, the recipe would be like::
6896
6897 inherit cmake
6898 PACKAGECONFIG = "systemd"
6899 PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF"
6900
6901 A side note to this recipe is to check if ``systemd`` is in fact the used :term:`INIT_MANAGER`
6902 or not::
6903
6904 PACKAGECONFIG = "${@'systemd' if d.getVar('INIT_MANAGER') == 'systemd' else ''}"
5390 6905
5391 :term:`PACKAGECONFIG_CONFARGS` 6906 :term:`PACKAGECONFIG_CONFARGS`
5392 A space-separated list of configuration options generated from the 6907 A space-separated list of configuration options generated from the
5393 :term:`PACKAGECONFIG` setting. 6908 :term:`PACKAGECONFIG` setting.
5394 6909
5395 Classes such as :ref:`autotools <ref-classes-autotools>` and 6910 Classes such as :ref:`ref-classes-autotools` and :ref:`ref-classes-cmake`
5396 :ref:`cmake <ref-classes-cmake>` use ``PACKAGECONFIG_CONFARGS`` to 6911 use :term:`PACKAGECONFIG_CONFARGS` to pass :term:`PACKAGECONFIG` options
5397 pass ``PACKAGECONFIG`` options to ``configure`` and ``cmake``, 6912 to ``configure`` and ``cmake``, respectively. If you are using
5398 respectively. If you are using ``PACKAGECONFIG`` but not a class that 6913 :term:`PACKAGECONFIG` but not a class that handles the
5399 handles the ``do_configure`` task, then you need to use 6914 :ref:`ref-tasks-configure` task, then you need to use
5400 ``PACKAGECONFIG_CONFARGS`` appropriately. 6915 :term:`PACKAGECONFIG_CONFARGS` appropriately.
5401 6916
5402 :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` 6917 :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY`
5403 For recipes inheriting the 6918 For recipes inheriting the :ref:`ref-classes-packagegroup` class, setting
5404 :ref:`packagegroup <ref-classes-packagegroup>` class, setting 6919 :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the
5405 ``PACKAGEGROUP_DISABLE_COMPLEMENTARY`` to "1" specifies that the
5406 normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth) 6920 normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth)
5407 should not be automatically created by the ``packagegroup`` recipe, 6921 should not be automatically created by the ``packagegroup`` recipe,
5408 which is the default behavior. 6922 which is the default behavior.
5409 6923
5410 :term:`PACKAGES` 6924 :term:`PACKAGES`
5411 The list of packages the recipe creates. The default value is the 6925 The list of packages the recipe creates. The default value is the
5412 following: 6926 following::
5413 ::
5414 6927
5415 ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN} 6928 ${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
5416 6929
5417 During packaging, the :ref:`ref-tasks-package` task 6930 During packaging, the :ref:`ref-tasks-package` task
5418 goes through ``PACKAGES`` and uses the :term:`FILES` 6931 goes through :term:`PACKAGES` and uses the :term:`FILES`
5419 variable corresponding to each package to assign files to the 6932 variable corresponding to each package to assign files to the
5420 package. If a file matches the ``FILES`` variable for more than one 6933 package. If a file matches the :term:`FILES` variable for more than one
5421 package in ``PACKAGES``, it will be assigned to the earliest 6934 package in :term:`PACKAGES`, it will be assigned to the earliest
5422 (leftmost) package. 6935 (leftmost) package.
5423 6936
5424 Packages in the variable's list that are empty (i.e. where none of 6937 Packages in the variable's list that are empty (i.e. where none of
5425 the patterns in ``FILES_``\ pkg match any files installed by the 6938 the patterns in ``FILES:``\ pkg match any files installed by the
5426 :ref:`ref-tasks-install` task) are not generated, 6939 :ref:`ref-tasks-install` task) are not generated,
5427 unless generation is forced through the 6940 unless generation is forced through the
5428 :term:`ALLOW_EMPTY` variable. 6941 :term:`ALLOW_EMPTY` variable.
@@ -5430,10 +6943,10 @@ system and gives an overview of their function and contents.
5430 :term:`PACKAGES_DYNAMIC` 6943 :term:`PACKAGES_DYNAMIC`
5431 A promise that your recipe satisfies runtime dependencies for 6944 A promise that your recipe satisfies runtime dependencies for
5432 optional modules that are found in other recipes. 6945 optional modules that are found in other recipes.
5433 ``PACKAGES_DYNAMIC`` does not actually satisfy the dependencies, it 6946 :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it
5434 only states that they should be satisfied. For example, if a hard, 6947 only states that they should be satisfied. For example, if a hard,
5435 runtime dependency (:term:`RDEPENDS`) of another 6948 runtime dependency (:term:`RDEPENDS`) of another
5436 package is satisfied at build time through the ``PACKAGES_DYNAMIC`` 6949 package is satisfied at build time through the :term:`PACKAGES_DYNAMIC`
5437 variable, but a package with the module name is never actually 6950 variable, but a package with the module name is never actually
5438 produced, then the other package will be broken. Thus, if you attempt 6951 produced, then the other package will be broken. Thus, if you attempt
5439 to include that package in an image, you will get a dependency 6952 to include that package in an image, you will get a dependency
@@ -5443,11 +6956,11 @@ system and gives an overview of their function and contents.
5443 Typically, if there is a chance that such a situation can occur and 6956 Typically, if there is a chance that such a situation can occur and
5444 the package that is not created is valid without the dependency being 6957 the package that is not created is valid without the dependency being
5445 satisfied, then you should use :term:`RRECOMMENDS` 6958 satisfied, then you should use :term:`RRECOMMENDS`
5446 (a soft runtime dependency) instead of ``RDEPENDS``. 6959 (a soft runtime dependency) instead of :term:`RDEPENDS`.
5447 6960
5448 For an example of how to use the ``PACKAGES_DYNAMIC`` variable when 6961 For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when
5449 you are splitting packages, see the 6962 you are splitting packages, see the
5450 ":ref:`dev-manual/common-tasks:handling optional module packaging`" 6963 ":ref:`dev-manual/packages:handling optional module packaging`"
5451 section in the Yocto Project Development Tasks Manual. 6964 section in the Yocto Project Development Tasks Manual.
5452 6965
5453 :term:`PACKAGESPLITFUNCS` 6966 :term:`PACKAGESPLITFUNCS`
@@ -5461,17 +6974,20 @@ system and gives an overview of their function and contents.
5461 desired splitting. 6974 desired splitting.
5462 6975
5463 :term:`PARALLEL_MAKE` 6976 :term:`PARALLEL_MAKE`
5464 Extra options passed to the ``make`` command during the 6977
5465 :ref:`ref-tasks-compile` task in order to specify 6978 Extra options passed to the build tool command (``make``,
5466 parallel compilation on the local build host. This variable is 6979 ``ninja`` or more specific build engines, like the Go language one)
5467 usually in the form "-j x", where x represents the maximum number of 6980 during the :ref:`ref-tasks-compile` task, to specify parallel compilation
5468 parallel threads ``make`` can run. 6981 on the local build host. This variable is usually in the form "-j x",
6982 where x represents the maximum number of parallel threads such engines
6983 can run.
5469 6984
5470 .. note:: 6985 .. note::
5471 6986
5472 In order for ``PARALLEL_MAKE`` to be effective, ``make`` must be 6987 For software compiled by ``make``, in order for :term:`PARALLEL_MAKE`
5473 called with ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy way to ensure 6988 to be effective, ``make`` must be called with
5474 this is to use the ``oe_runmake`` function. 6989 ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
6990 way to ensure this is to use the ``oe_runmake`` function.
5475 6991
5476 By default, the OpenEmbedded build system automatically sets this 6992 By default, the OpenEmbedded build system automatically sets this
5477 variable to be equal to the number of cores the build system uses. 6993 variable to be equal to the number of cores the build system uses.
@@ -5479,40 +6995,45 @@ system and gives an overview of their function and contents.
5479 .. note:: 6995 .. note::
5480 6996
5481 If the software being built experiences dependency issues during 6997 If the software being built experiences dependency issues during
5482 the ``do_compile`` task that result in race conditions, you can clear 6998 the :ref:`ref-tasks-compile` task that result in race conditions, you can clear
5483 the ``PARALLEL_MAKE`` variable within the recipe as a workaround. For 6999 the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For
5484 information on addressing race conditions, see the 7000 information on addressing race conditions, see the
5485 ":ref:`dev-manual/common-tasks:debugging parallel make races`" 7001 ":ref:`dev-manual/debugging:debugging parallel make races`"
5486 section in the Yocto Project Development Tasks Manual. 7002 section in the Yocto Project Development Tasks Manual.
5487 7003
5488 For single socket systems (i.e. one CPU), you should not have to 7004 For single socket systems (i.e. one CPU), you should not have to
5489 override this variable to gain optimal parallelism during builds. 7005 override this variable to gain optimal parallelism during builds.
5490 However, if you have very large systems that employ multiple physical 7006 However, if you have very large systems that employ multiple physical
5491 CPUs, you might want to make sure the ``PARALLEL_MAKE`` variable is 7007 CPUs, you might want to make sure the :term:`PARALLEL_MAKE` variable is
5492 not set higher than "-j 20". 7008 not set higher than "-j 20".
5493 7009
5494 For more information on speeding up builds, see the 7010 For more information on speeding up builds, see the
5495 ":ref:`dev-manual/common-tasks:speeding up a build`" 7011 ":ref:`dev-manual/speeding-up-build:speeding up a build`"
5496 section in the Yocto Project Development Tasks Manual. 7012 section in the Yocto Project Development Tasks Manual.
5497 7013
7014 For more information on how to limit the resources used during builds, see
7015 the :doc:`/dev-manual/limiting-resources` section of the Yocto Project
7016 Development Tasks Manual.
7017
5498 :term:`PARALLEL_MAKEINST` 7018 :term:`PARALLEL_MAKEINST`
5499 Extra options passed to the ``make install`` command during the 7019 Extra options passed to the build tool install command
5500 :ref:`ref-tasks-install` task in order to specify 7020 (``make install``, ``ninja install`` or more specific ones)
7021 during the :ref:`ref-tasks-install` task in order to specify
5501 parallel installation. This variable defaults to the value of 7022 parallel installation. This variable defaults to the value of
5502 :term:`PARALLEL_MAKE`. 7023 :term:`PARALLEL_MAKE`.
5503 7024
5504 .. note:: 7025 .. note::
5505 7026
5506 In order for ``PARALLEL_MAKEINST`` to be effective, ``make`` must 7027 For software compiled by ``make``, in order for :term:`PARALLEL_MAKEINST`
5507 be called with 7028 to be effective, ``make`` must be called with
5508 ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy 7029 ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
5509 way to ensure this is to use the ``oe_runmake`` function. 7030 way to ensure this is to use the ``oe_runmake`` function.
5510 7031
5511 If the software being built experiences dependency issues during 7032 If the software being built experiences dependency issues during
5512 the ``do_install`` task that result in race conditions, you can 7033 the :ref:`ref-tasks-install` task that result in race conditions, you can
5513 clear the ``PARALLEL_MAKEINST`` variable within the recipe as a 7034 clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a
5514 workaround. For information on addressing race conditions, see the 7035 workaround. For information on addressing race conditions, see the
5515 ":ref:`dev-manual/common-tasks:debugging parallel make races`" 7036 ":ref:`dev-manual/debugging:debugging parallel make races`"
5516 section in the Yocto Project Development Tasks Manual. 7037 section in the Yocto Project Development Tasks Manual.
5517 7038
5518 :term:`PATCHRESOLVE` 7039 :term:`PATCHRESOLVE`
@@ -5536,8 +7057,7 @@ system and gives an overview of their function and contents.
5536 patched, it uses "patch". 7057 patched, it uses "patch".
5537 7058
5538 If you wish to use an alternative patching tool, set the variable in 7059 If you wish to use an alternative patching tool, set the variable in
5539 the recipe using one of the following: 7060 the recipe using one of the following::
5540 ::
5541 7061
5542 PATCHTOOL = "patch" 7062 PATCHTOOL = "patch"
5543 PATCHTOOL = "quilt" 7063 PATCHTOOL = "quilt"
@@ -5548,7 +7068,15 @@ system and gives an overview of their function and contents.
5548 variable is used to make upgrades possible when the versioning scheme 7068 variable is used to make upgrades possible when the versioning scheme
5549 changes in some backwards incompatible way. 7069 changes in some backwards incompatible way.
5550 7070
5551 ``PE`` is the default value of the :term:`PKGE` variable. 7071 :term:`PE` is the default value of the :term:`PKGE` variable.
7072
7073 :term:`PEP517_WHEEL_PATH`
7074 When used by recipes that inherit the :ref:`ref-classes-python_pep517`
7075 class, denotes the path to ``dist/`` (short for distribution) where the
7076 binary archive ``wheel`` is built.
7077
7078 :term:`PERSISTENT_DIR`
7079 See :term:`bitbake:PERSISTENT_DIR` in the BitBake manual.
5552 7080
5553 :term:`PF` 7081 :term:`PF`
5554 Specifies the recipe or package name and includes all version and 7082 Specifies the recipe or package name and includes all version and
@@ -5557,10 +7085,11 @@ system and gives an overview of their function and contents.
5557 ${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`} 7085 ${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`}
5558 7086
5559 :term:`PIXBUF_PACKAGES` 7087 :term:`PIXBUF_PACKAGES`
5560 When inheriting the :ref:`pixbufcache <ref-classes-pixbufcache>` 7088 When inheriting the :ref:`ref-classes-pixbufcache`
5561 class, this variable identifies packages that contain the pixbuf 7089 class, this variable identifies packages that contain the pixbuf
5562 loaders used with ``gdk-pixbuf``. By default, the ``pixbufcache`` 7090 loaders used with ``gdk-pixbuf``. By default, the
5563 class assumes that the loaders are in the recipe's main package (i.e. 7091 :ref:`ref-classes-pixbufcache` class assumes that
7092 the loaders are in the recipe's main package (i.e.
5564 ``${``\ :term:`PN`\ ``}``). Use this variable if the 7093 ``${``\ :term:`PN`\ ``}``). Use this variable if the
5565 loaders you need are in a package other than that main package. 7094 loaders you need are in a package other than that main package.
5566 7095
@@ -5570,11 +7099,10 @@ system and gives an overview of their function and contents.
5570 7099
5571 .. note:: 7100 .. note::
5572 7101
5573 When using the ``PKG`` variable, you must use a package name override. 7102 When using the :term:`PKG` variable, you must use a package name override.
5574 7103
5575 For example, when the :ref:`debian <ref-classes-debian>` class 7104 For example, when the :ref:`ref-classes-debian` class renames the output
5576 renames the output package, it does so by setting 7105 package, it does so by setting ``PKG:packagename``.
5577 ``PKG_packagename``.
5578 7106
5579 :term:`PKG_CONFIG_PATH` 7107 :term:`PKG_CONFIG_PATH`
5580 The path to ``pkg-config`` files for the current build context. 7108 The path to ``pkg-config`` files for the current build context.
@@ -5583,8 +7111,7 @@ system and gives an overview of their function and contents.
5583 :term:`PKGD` 7111 :term:`PKGD`
5584 Points to the destination directory for files to be packaged before 7112 Points to the destination directory for files to be packaged before
5585 they are split into individual packages. This directory defaults to 7113 they are split into individual packages. This directory defaults to
5586 the following: 7114 the following::
5587 ::
5588 7115
5589 ${WORKDIR}/package 7116 ${WORKDIR}/package
5590 7117
@@ -5596,15 +7123,14 @@ system and gives an overview of their function and contents.
5596 :ref:`ref-tasks-packagedata` task packages data 7123 :ref:`ref-tasks-packagedata` task packages data
5597 for each recipe and installs it into this temporary, shared area. 7124 for each recipe and installs it into this temporary, shared area.
5598 This directory defaults to the following, which you should not 7125 This directory defaults to the following, which you should not
5599 change: 7126 change::
5600 ::
5601 7127
5602 ${STAGING_DIR_HOST}/pkgdata 7128 ${STAGING_DIR_HOST}/pkgdata
5603 7129
5604 For examples of how this data is used, see the 7130 For examples of how this data is used, see the
5605 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 7131 ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
5606 section in the Yocto Project Overview and Concepts Manual and the 7132 section in the Yocto Project Overview and Concepts Manual and the
5607 ":ref:`dev-manual/common-tasks:viewing package information with \`\`oe-pkgdata-util\`\``" 7133 ":ref:`dev-manual/debugging:viewing package information with ``oe-pkgdata-util```"
5608 section in the Yocto Project Development Tasks Manual. For more 7134 section in the Yocto Project Development Tasks Manual. For more
5609 information on the shared, global-state directory, see 7135 information on the shared, global-state directory, see
5610 :term:`STAGING_DIR_HOST`. 7136 :term:`STAGING_DIR_HOST`.
@@ -5612,8 +7138,7 @@ system and gives an overview of their function and contents.
5612 :term:`PKGDEST` 7138 :term:`PKGDEST`
5613 Points to the parent directory for files to be packaged after they 7139 Points to the parent directory for files to be packaged after they
5614 have been split into individual packages. This directory defaults to 7140 have been split into individual packages. This directory defaults to
5615 the following: 7141 the following::
5616 ::
5617 7142
5618 ${WORKDIR}/packages-split 7143 ${WORKDIR}/packages-split
5619 7144
@@ -5624,68 +7149,70 @@ system and gives an overview of their function and contents.
5624 :term:`PKGDESTWORK` 7149 :term:`PKGDESTWORK`
5625 Points to a temporary work area where the 7150 Points to a temporary work area where the
5626 :ref:`ref-tasks-package` task saves package metadata. 7151 :ref:`ref-tasks-package` task saves package metadata.
5627 The ``PKGDESTWORK`` location defaults to the following: 7152 The :term:`PKGDESTWORK` location defaults to the following::
5628 ::
5629 7153
5630 ${WORKDIR}/pkgdata 7154 ${WORKDIR}/pkgdata
5631 7155
5632 Do not change this default. 7156 Do not change this default.
5633 7157
5634 The :ref:`ref-tasks-packagedata` task copies the 7158 The :ref:`ref-tasks-packagedata` task copies the
5635 package metadata from ``PKGDESTWORK`` to 7159 package metadata from :term:`PKGDESTWORK` to
5636 :term:`PKGDATA_DIR` to make it available globally. 7160 :term:`PKGDATA_DIR` to make it available globally.
5637 7161
5638 :term:`PKGE` 7162 :term:`PKGE`
5639 The epoch of the package(s) built by the recipe. By default, ``PKGE`` 7163 The epoch of the package(s) built by the recipe. By default, :term:`PKGE`
5640 is set to :term:`PE`. 7164 is set to :term:`PE`.
5641 7165
5642 :term:`PKGR` 7166 :term:`PKGR`
5643 The revision of the package(s) built by the recipe. By default, 7167 The revision of the package(s) built by the recipe. By default,
5644 ``PKGR`` is set to :term:`PR`. 7168 :term:`PKGR` is set to :term:`PR`.
5645 7169
5646 :term:`PKGV` 7170 :term:`PKGV`
5647 The version of the package(s) built by the recipe. By default, 7171 The version of the package(s) built by the recipe. By default,
5648 ``PKGV`` is set to :term:`PV`. 7172 :term:`PKGV` is set to :term:`PV`.
7173
7174 If :term:`PV` contains the ``+`` sign, source control information will be
7175 included in :term:`PKGV` later in the packaging phase. For more
7176 information, see the :doc:`/dev-manual/external-scm` section of the Yocto
7177 Project Development Tasks Manual.
7178
7179 .. warning::
7180
7181 Since source control information is included in a late stage by the
7182 :ref:`ref-classes-package` class, it cannot be seen from the BitBake
7183 environment with ``bitbake -e`` or ``bitbake-getvar``. Instead, after
7184 the package is built, the version information can be retrieved with
7185 ``oe-pkgdata-util package-info <package name>``. See the
7186 :ref:`dev-manual/debugging:Viewing Package Information with
7187 ``oe-pkgdata-util``` section of the Yocto Project Development Tasks
7188 Manual for more information on ``oe-pkgdata-util``.
7189
5649 7190
5650 :term:`PN` 7191 :term:`PN`
5651 This variable can have two separate functions depending on the 7192 This variable can have two separate functions depending on the
5652 context: a recipe name or a resulting package name. 7193 context: a recipe name or a resulting package name.
5653 7194
5654 ``PN`` refers to a recipe name in the context of a file used by the 7195 :term:`PN` refers to a recipe name in the context of a file used by the
5655 OpenEmbedded build system as input to create a package. The name is 7196 OpenEmbedded build system as input to create a package. The name is
5656 normally extracted from the recipe file name. For example, if the 7197 normally extracted from the recipe file name. For example, if the
5657 recipe is named ``expat_2.0.1.bb``, then the default value of ``PN`` 7198 recipe is named ``expat_2.0.1.bb``, then the default value of :term:`PN`
5658 will be "expat". 7199 will be "expat".
5659 7200
5660 The variable refers to a package name in the context of a file 7201 The variable refers to a package name in the context of a file
5661 created or produced by the OpenEmbedded build system. 7202 created or produced by the OpenEmbedded build system.
5662 7203
5663 If applicable, the ``PN`` variable also contains any special suffix 7204 If applicable, the :term:`PN` variable also contains any special suffix
5664 or prefix. For example, using ``bash`` to build packages for the 7205 or prefix. For example, using ``bash`` to build packages for the
5665 native machine, ``PN`` is ``bash-native``. Using ``bash`` to build 7206 native machine, :term:`PN` is ``bash-native``. Using ``bash`` to build
5666 packages for the target and for Multilib, ``PN`` would be ``bash`` 7207 packages for the target and for Multilib, :term:`PN` would be ``bash``
5667 and ``lib64-bash``, respectively. 7208 and ``lib64-bash``, respectively.
5668 7209
5669 :term:`PNBLACKLIST`
5670 Lists recipes you do not want the OpenEmbedded build system to build.
5671 This variable works in conjunction with the
5672 :ref:`blacklist <ref-classes-blacklist>` class, which is inherited
5673 globally.
5674
5675 To prevent a recipe from being built, use the ``PNBLACKLIST``
5676 variable in your ``local.conf`` file. Here is an example that
5677 prevents ``myrecipe`` from being built:
5678 ::
5679
5680 PNBLACKLIST[myrecipe] = "Not supported by our organization."
5681
5682 :term:`POPULATE_SDK_POST_HOST_COMMAND` 7210 :term:`POPULATE_SDK_POST_HOST_COMMAND`
5683 Specifies a list of functions to call once the OpenEmbedded build 7211 Specifies a list of functions to call once the OpenEmbedded build
5684 system has created the host part of the SDK. You can specify 7212 system has created the host part of the SDK. You can specify
5685 functions separated by semicolons: 7213 functions separated by spaces::
5686 ::
5687 7214
5688 POPULATE_SDK_POST_HOST_COMMAND += "function; ... " 7215 POPULATE_SDK_POST_HOST_COMMAND += "function"
5689 7216
5690 If you need to pass the SDK path to a command within a function, you 7217 If you need to pass the SDK path to a command within a function, you
5691 can use ``${SDK_DIR}``, which points to the parent directory used by 7218 can use ``${SDK_DIR}``, which points to the parent directory used by
@@ -5695,10 +7222,9 @@ system and gives an overview of their function and contents.
5695 :term:`POPULATE_SDK_POST_TARGET_COMMAND` 7222 :term:`POPULATE_SDK_POST_TARGET_COMMAND`
5696 Specifies a list of functions to call once the OpenEmbedded build 7223 Specifies a list of functions to call once the OpenEmbedded build
5697 system has created the target part of the SDK. You can specify 7224 system has created the target part of the SDK. You can specify
5698 functions separated by semicolons: 7225 functions separated by spaces::
5699 ::
5700 7226
5701 POPULATE_SDK_POST_TARGET_COMMAND += "function; ... " 7227 POPULATE_SDK_POST_TARGET_COMMAND += "function"
5702 7228
5703 If you need to pass the SDK path to a command within a function, you 7229 If you need to pass the SDK path to a command within a function, you
5704 can use ``${SDK_DIR}``, which points to the parent directory used by 7230 can use ``${SDK_DIR}``, which points to the parent directory used by
@@ -5709,35 +7235,35 @@ system and gives an overview of their function and contents.
5709 The revision of the recipe. The default value for this variable is 7235 The revision of the recipe. The default value for this variable is
5710 "r0". Subsequent revisions of the recipe conventionally have the 7236 "r0". Subsequent revisions of the recipe conventionally have the
5711 values "r1", "r2", and so forth. When :term:`PV` increases, 7237 values "r1", "r2", and so forth. When :term:`PV` increases,
5712 ``PR`` is conventionally reset to "r0". 7238 :term:`PR` is conventionally reset to "r0".
5713 7239
5714 .. note:: 7240 .. note::
5715 7241
5716 The OpenEmbedded build system does not need the aid of ``PR`` 7242 The OpenEmbedded build system does not need the aid of :term:`PR`
5717 to know when to rebuild a recipe. The build system uses the task 7243 to know when to rebuild a recipe. The build system uses the task
5718 :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the 7244 :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the
5719 :ref:`stamp <structure-build-tmp-stamps>` and 7245 :ref:`stamp <structure-build-tmp-stamps>` and
5720 :ref:`overview-manual/concepts:shared state cache` 7246 :ref:`overview-manual/concepts:shared state cache`
5721 mechanisms. 7247 mechanisms.
5722 7248
5723 The ``PR`` variable primarily becomes significant when a package 7249 The :term:`PR` variable primarily becomes significant when a package
5724 manager dynamically installs packages on an already built image. In 7250 manager dynamically installs packages on an already built image. In
5725 this case, ``PR``, which is the default value of 7251 this case, :term:`PR`, which is the default value of
5726 :term:`PKGR`, helps the package manager distinguish which 7252 :term:`PKGR`, helps the package manager distinguish which
5727 package is the most recent one in cases where many packages have the 7253 package is the most recent one in cases where many packages have the
5728 same ``PV`` (i.e. ``PKGV``). A component having many packages with 7254 same :term:`PV` (i.e. :term:`PKGV`). A component having many packages with
5729 the same ``PV`` usually means that the packages all install the same 7255 the same :term:`PV` usually means that the packages all install the same
5730 upstream version, but with later (``PR``) version packages including 7256 upstream version, but with later (:term:`PR`) version packages including
5731 packaging fixes. 7257 packaging fixes.
5732 7258
5733 .. note:: 7259 .. note::
5734 7260
5735 ``PR`` does not need to be increased for changes that do not change the 7261 :term:`PR` does not need to be increased for changes that do not change the
5736 package contents or metadata. 7262 package contents or metadata.
5737 7263
5738 Because manually managing ``PR`` can be cumbersome and error-prone, 7264 Because manually managing :term:`PR` can be cumbersome and error-prone,
5739 an automated solution exists. See the 7265 an automated solution exists. See the
5740 ":ref:`dev-manual/common-tasks:working with a pr service`" section 7266 ":ref:`dev-manual/packages:working with a pr service`" section
5741 in the Yocto Project Development Tasks Manual for more information. 7267 in the Yocto Project Development Tasks Manual for more information.
5742 7268
5743 :term:`PREFERRED_PROVIDER` 7269 :term:`PREFERRED_PROVIDER`
@@ -5746,45 +7272,119 @@ system and gives an overview of their function and contents.
5746 preferred provider). You should always suffix this variable with the 7272 preferred provider). You should always suffix this variable with the
5747 name of the provided item. And, you should define the variable using 7273 name of the provided item. And, you should define the variable using
5748 the preferred recipe's name (:term:`PN`). Here is a common 7274 the preferred recipe's name (:term:`PN`). Here is a common
5749 example: 7275 example::
5750 ::
5751 7276
5752 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 7277 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
5753 7278
5754 In the previous example, multiple recipes are providing "virtual/kernel". 7279 In the previous example, multiple recipes are providing "virtual/kernel".
5755 The ``PREFERRED_PROVIDER`` variable is set with the name (``PN``) of 7280 The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of
5756 the recipe you prefer to provide "virtual/kernel". 7281 the recipe you prefer to provide "virtual/kernel".
5757 7282
5758 Following are more examples: 7283 Here are more examples::
5759 ::
5760 7284
5761 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86" 7285 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
5762 PREFERRED_PROVIDER_virtual/libgl ?= "mesa" 7286 PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
5763 7287
5764 For more 7288 For more
5765 information, see the ":ref:`dev-manual/common-tasks:using virtual providers`" 7289 information, see the ":ref:`dev-manual/new-recipe:using virtual providers`"
5766 section in the Yocto Project Development Tasks Manual. 7290 section in the Yocto Project Development Tasks Manual.
5767 7291
5768 .. note:: 7292 .. note::
5769 7293
5770 If you use a ``virtual/\*`` item with ``PREFERRED_PROVIDER``, then any 7294 If you use a ``virtual/\*`` item with :term:`PREFERRED_PROVIDER`, then any
5771 recipe that :term:`PROVIDES` that item but is not selected (defined) 7295 recipe that :term:`PROVIDES` that item but is not selected (defined)
5772 by ``PREFERRED_PROVIDER`` is prevented from building, which is usually 7296 by :term:`PREFERRED_PROVIDER` is prevented from building, which is usually
5773 desirable since this mechanism is designed to select between mutually 7297 desirable since this mechanism is designed to select between mutually
5774 exclusive alternative providers. 7298 exclusive alternative providers.
5775 7299
7300 :term:`PREFERRED_PROVIDERS`
7301 See :term:`bitbake:PREFERRED_PROVIDERS` in the BitBake manual.
7302
7303 :term:`PREFERRED_RPROVIDER`
7304 The :term:`PREFERRED_RPROVIDER` variable works like the
7305 :term:`PREFERRED_PROVIDER` variable, but it denotes packages that provide a
7306 *runtime* component. Runtime providers are declared in recipes that set
7307 the :term:`RPROVIDES` variable for a specific package.
7308
7309 For example::
7310
7311 PREFERRED_RPROVIDER_virtual-x-terminal-emulator = "rxvt-unicode"
7312
7313 This statement sets the runtime provider for the X terminal emulator to
7314 ``rxvt-unicode``. The ``rxvt-unicode`` package is a runtime provider of
7315 this component because the ``rxvt-unicode`` recipe set the following
7316 :term:`RPROVIDES` definition for the ``rxvt-unicode`` (``${PN}``)
7317 package::
7318
7319 RPROVIDES:${PN} = "virtual-x-terminal-emulator"
7320
7321 For more information on virtual providers, see the
7322 ":ref:`dev-manual/new-recipe:using virtual providers`" section in the
7323 Yocto Project Development Tasks Manual.
7324
7325 :term:`PREFERRED_TOOLCHAIN`
7326 The :term:`PREFERRED_TOOLCHAIN` variable selects the toolchain to use for
7327 compiling recipes. This variable is not meant to be overridden globally.
7328 Instead, the values of :term:`PREFERRED_TOOLCHAIN_TARGET`,
7329 :term:`PREFERRED_TOOLCHAIN_NATIVE` and :term:`PREFERRED_TOOLCHAIN_SDK`
7330 should be overridden.
7331
7332 :term:`PREFERRED_TOOLCHAIN_NATIVE`
7333 This variable controls the toolchain used for compiling
7334 :ref:`ref-classes-native` recipes.
7335
7336 This variable should be set globally from a :term:`configuration file`.
7337
7338 See :term:`PREFERRED_TOOLCHAIN_TARGET` for more details on the possible
7339 values for this variable.
7340
7341 A recipe that does not support the toolchain specified by
7342 :term:`PREFERRED_TOOLCHAIN_NATIVE` can override it locally with
7343 :term:`TOOLCHAIN_NATIVE`.
7344
7345 :term:`PREFERRED_TOOLCHAIN_SDK`
7346 This variable controls the toolchain used for compiling
7347 :ref:`ref-classes-nativesdk` recipes.
7348
7349 This variable should be set globally from a :term:`configuration file`.
7350
7351 See :term:`PREFERRED_TOOLCHAIN_TARGET` for more details on the possible
7352 values for this variable.
7353
7354 :term:`PREFERRED_TOOLCHAIN_TARGET`
7355 This variable controls the toolchain used for compiling recipes in the
7356 architecture of the target :term:`MACHINE`.
7357
7358 There are two possible values for this variable at the moment:
7359
7360 - :ref:`gcc <ref-classes-toolchain-gcc>` (default): the GCC/Binutils toolchain.
7361 - :ref:`clang <ref-classes-toolchain-clang>`: the Clang/LLVM toolchain.
7362
7363 :term:`PREFERRED_TOOLCHAIN_TARGET` will make the :ref:`ref-classes-base`
7364 class inherit one of the toolchain classes defined in
7365 :oe_git:`meta/classes/toolchain
7366 </openembedded-core/tree/meta/classes/toolchain>`. As a consequence, this
7367 variable should be set globally from a :term:`configuration file`.
7368
7369 These classes define commands used for cross-compiling such as :term:`CC`,
7370 :term:`CXX`, :term:`LD` and so on.
7371
7372 A recipe that does not support the toolchain specified by
7373 :term:`PREFERRED_TOOLCHAIN_TARGET` can override it locally with
7374 :term:`TOOLCHAIN`.
7375
5776 :term:`PREFERRED_VERSION` 7376 :term:`PREFERRED_VERSION`
5777 If multiple versions of recipes exist, this variable determines which 7377 If there are multiple versions of a recipe available, this variable
5778 version is given preference. You must always suffix the variable with 7378 determines which version should be given preference. You must always
5779 the :term:`PN` you want to select, and you should set the 7379 suffix the variable with the :term:`PN` you want to select (`python` in
5780 :term:`PV` accordingly for precedence. 7380 the first example below), and you should specify the :term:`PV`
7381 accordingly (`3.4.0` in the example).
5781 7382
5782 The ``PREFERRED_VERSION`` variable supports limited wildcard use 7383 The :term:`PREFERRED_VERSION` variable supports limited wildcard use
5783 through the "``%``" character. You can use the character to match any 7384 through the "``%``" character. You can use the character to match any
5784 number of characters, which can be useful when specifying versions 7385 number of characters, which can be useful when specifying versions
5785 that contain long revision numbers that potentially change. Here are 7386 that contain long revision numbers that potentially change. Here are
5786 two examples: 7387 two examples::
5787 ::
5788 7388
5789 PREFERRED_VERSION_python = "3.4.0" 7389 PREFERRED_VERSION_python = "3.4.0"
5790 PREFERRED_VERSION_linux-yocto = "5.0%" 7390 PREFERRED_VERSION_linux-yocto = "5.0%"
@@ -5795,69 +7395,58 @@ system and gives an overview of their function and contents.
5795 string. You cannot use the wildcard character in any other 7395 string. You cannot use the wildcard character in any other
5796 location of the string. 7396 location of the string.
5797 7397
5798 The specified version is matched against :term:`PV`, which 7398 The specified version is matched against :term:`PV`, which does not
5799 does not necessarily match the version part of the recipe's filename. 7399 necessarily match the version part of the recipe's filename.
5800 For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
5801 where ``foo_git.bb`` contains the following assignment:
5802 ::
5803
5804 PV = "1.1+git${SRCPV}"
5805 7400
5806 In this case, the correct way to select 7401 If you want to select a recipe named ``foo_git.bb`` which has :term:`PV`
5807 ``foo_git.bb`` is by using an assignment such as the following: 7402 set to ``1.2.3+git``, you can do so by setting ```PREFERRED_VERSION_foo``
5808 :: 7403 to ``1.2.3%`` (i.e. simply setting ``PREFERRED_VERSION_foo`` to ``git``
7404 will not work as the name of the recipe isn't used, but rather its
7405 :term:`PV` definition).
5809 7406
5810 PREFERRED_VERSION_foo = "1.1+git%" 7407 Sometimes the :term:`PREFERRED_VERSION` variable can be set by
5811
5812 Compare that previous example
5813 against the following incorrect example, which does not work:
5814 ::
5815
5816 PREFERRED_VERSION_foo = "git"
5817
5818 Sometimes the ``PREFERRED_VERSION`` variable can be set by
5819 configuration files in a way that is hard to change. You can use 7408 configuration files in a way that is hard to change. You can use
5820 :term:`OVERRIDES` to set a machine-specific 7409 :term:`OVERRIDES` to set a machine-specific
5821 override. Here is an example: 7410 override. Here is an example::
5822 ::
5823 7411
5824 PREFERRED_VERSION_linux-yocto_qemux86 = "5.0%" 7412 PREFERRED_VERSION_linux-yocto:qemux86 = "5.0%"
5825 7413
5826 Although not recommended, worst case, you can also use the 7414 Although not recommended, worst case, you can also use the
5827 "forcevariable" override, which is the strongest override possible. 7415 "forcevariable" override, which is the strongest override possible.
5828 Here is an example: 7416 Here is an example::
5829 ::
5830 7417
5831 PREFERRED_VERSION_linux-yocto_forcevariable = "5.0%" 7418 PREFERRED_VERSION_linux-yocto:forcevariable = "5.0%"
5832 7419
5833 .. note:: 7420 .. note::
5834 7421
5835 The ``\_forcevariable`` override is not handled specially. This override 7422 The ``:forcevariable`` override is not handled specially. This override
5836 only works because the default value of ``OVERRIDES`` includes "forcevariable". 7423 only works because the default value of :term:`OVERRIDES` includes "forcevariable".
7424
7425 If a recipe with the specified version is not available, a warning
7426 message will be shown. See :term:`REQUIRED_VERSION` if you want this
7427 to be an error instead.
5837 7428
5838 :term:`PREMIRRORS` 7429 :term:`PREMIRRORS`
5839 Specifies additional paths from which the OpenEmbedded build system 7430 Specifies additional paths from which the OpenEmbedded build system
5840 gets source code. When the build system searches for source code, it 7431 gets source code. When the build system searches for source code, it
5841 first tries the local download directory. If that location fails, the 7432 first tries the local download directory. If that location fails, the
5842 build system tries locations defined by ``PREMIRRORS``, the upstream 7433 build system tries locations defined by :term:`PREMIRRORS`, the upstream
5843 source, and then locations specified by 7434 source, and then locations specified by
5844 :term:`MIRRORS` in that order. 7435 :term:`MIRRORS` in that order.
5845 7436
5846 Assuming your distribution (:term:`DISTRO`) is "poky", 7437 The default value for :term:`PREMIRRORS` is defined in the
5847 the default value for ``PREMIRRORS`` is defined in the 7438 ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
5848 ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository.
5849 7439
5850 Typically, you could add a specific server for the build system to 7440 Typically, you could add a specific server for the build system to
5851 attempt before any others by adding something like the following to 7441 attempt before any others by adding something like the following to
5852 the ``local.conf`` configuration file in the 7442 the ``local.conf`` configuration file in the
5853 :term:`Build Directory`: 7443 :term:`Build Directory`::
5854 ::
5855 7444
5856 PREMIRRORS_prepend = "\ 7445 PREMIRRORS:prepend = "\
5857 git://.*/.* http://www.yoctoproject.org/sources/ \n \ 7446 git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
5858 ftp://.*/.* http://www.yoctoproject.org/sources/ \n \ 7447 ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
5859 http://.*/.* http://www.yoctoproject.org/sources/ \n \ 7448 http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
5860 https://.*/.* http://www.yoctoproject.org/sources/ \n" 7449 https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
5861 7450
5862 These changes cause the 7451 These changes cause the
5863 build system to intercept Git, FTP, HTTP, and HTTPS requests and 7452 build system to intercept Git, FTP, HTTP, and HTTPS requests and
@@ -5868,12 +7457,12 @@ system and gives an overview of their function and contents.
5868 :term:`PRIORITY` 7457 :term:`PRIORITY`
5869 Indicates the importance of a package. 7458 Indicates the importance of a package.
5870 7459
5871 ``PRIORITY`` is considered to be part of the distribution policy 7460 :term:`PRIORITY` is considered to be part of the distribution policy
5872 because the importance of any given recipe depends on the purpose for 7461 because the importance of any given recipe depends on the purpose for
5873 which the distribution is being produced. Thus, ``PRIORITY`` is not 7462 which the distribution is being produced. Thus, :term:`PRIORITY` is not
5874 normally set within recipes. 7463 normally set within recipes.
5875 7464
5876 You can set ``PRIORITY`` to "required", "standard", "extra", and 7465 You can set :term:`PRIORITY` to "required", "standard", "extra", and
5877 "optional", which is the default. 7466 "optional", which is the default.
5878 7467
5879 :term:`PRIVATE_LIBS` 7468 :term:`PRIVATE_LIBS`
@@ -5887,8 +7476,7 @@ system and gives an overview of their function and contents.
5887 standard version of the library. 7476 standard version of the library.
5888 7477
5889 Libraries specified in this variable should be specified by their 7478 Libraries specified in this variable should be specified by their
5890 file name. For example, from the Firefox recipe in meta-browser: 7479 file name. For example, from the Firefox recipe in meta-browser::
5891 ::
5892 7480
5893 PRIVATE_LIBS = "libmozjs.so \ 7481 PRIVATE_LIBS = "libmozjs.so \
5894 libxpcom.so \ 7482 libxpcom.so \
@@ -5904,35 +7492,34 @@ system and gives an overview of their function and contents.
5904 7492
5905 :term:`PROVIDES` 7493 :term:`PROVIDES`
5906 A list of aliases by which a particular recipe can be known. By 7494 A list of aliases by which a particular recipe can be known. By
5907 default, a recipe's own ``PN`` is implicitly already in its 7495 default, a recipe's own :term:`PN` is implicitly already in its
5908 ``PROVIDES`` list and therefore does not need to mention that it 7496 :term:`PROVIDES` list and therefore does not need to mention that it
5909 provides itself. If a recipe uses ``PROVIDES``, the additional 7497 provides itself. If a recipe uses :term:`PROVIDES`, the additional
5910 aliases are synonyms for the recipe and can be useful for satisfying 7498 aliases are synonyms for the recipe and can be useful for satisfying
5911 dependencies of other recipes during the build as specified by 7499 dependencies of other recipes during the build as specified by
5912 ``DEPENDS``. 7500 :term:`DEPENDS`.
5913 7501
5914 Consider the following example ``PROVIDES`` statement from the recipe 7502 Consider the following example :term:`PROVIDES` statement from the recipe
5915 file ``eudev_3.2.9.bb``: 7503 file ``eudev_3.2.9.bb``::
5916 ::
5917 7504
5918 PROVIDES += "udev" 7505 PROVIDES += "udev"
5919 7506
5920 The ``PROVIDES`` statement 7507 The :term:`PROVIDES` statement
5921 results in the "eudev" recipe also being available as simply "udev". 7508 results in the "eudev" recipe also being available as simply "udev".
5922 7509
5923 .. note:: 7510 .. note::
5924 7511
5925 A recipe's own recipe name (:term:`PN`) is always implicitly prepended 7512 A recipe's own recipe name (:term:`PN`) is always implicitly prepended
5926 to `PROVIDES`, so while using "+=" in the above example may not be 7513 to :term:`PROVIDES`, so while using "+=" in the above example may not be
5927 strictly necessary it is recommended to avoid confusion. 7514 strictly necessary it is recommended to avoid confusion.
5928 7515
5929 In addition to providing recipes under alternate names, the 7516 In addition to providing recipes under alternate names, the
5930 ``PROVIDES`` mechanism is also used to implement virtual targets. A 7517 :term:`PROVIDES` mechanism is also used to implement virtual targets. A
5931 virtual target is a name that corresponds to some particular 7518 virtual target is a name that corresponds to some particular
5932 functionality (e.g. a Linux kernel). Recipes that provide the 7519 functionality (e.g. a Linux kernel). Recipes that provide the
5933 functionality in question list the virtual target in ``PROVIDES``. 7520 functionality in question list the virtual target in :term:`PROVIDES`.
5934 Recipes that depend on the functionality in question can include the 7521 Recipes that depend on the functionality in question can include the
5935 virtual target in ``DEPENDS`` to leave the choice of provider open. 7522 virtual target in :term:`DEPENDS` to leave the choice of provider open.
5936 7523
5937 Conventionally, virtual targets have names on the form 7524 Conventionally, virtual targets have names on the form
5938 "virtual/function" (e.g. "virtual/kernel"). The slash is simply part 7525 "virtual/function" (e.g. "virtual/kernel"). The slash is simply part
@@ -5943,15 +7530,14 @@ system and gives an overview of their function and contents.
5943 7530
5944 .. note:: 7531 .. note::
5945 7532
5946 A corresponding mechanism for virtual runtime dependencies 7533 A corresponding mechanism for virtual runtime dependencies (packages)
5947 (packages) exists. However, the mechanism does not depend on any 7534 exists. However, the mechanism does not depend on any special
5948 special functionality beyond ordinary variable assignments. For 7535 functionality beyond ordinary variable assignments. For example,
5949 example, ``VIRTUAL-RUNTIME_dev_manager`` refers to the package of 7536 :term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` refers to the
5950 the component that manages the ``/dev`` directory. 7537 package of the component that manages the ``/dev`` directory.
5951 7538
5952 Setting the "preferred provider" for runtime dependencies is as 7539 Setting the "preferred provider" for runtime dependencies is as
5953 simple as using the following assignment in a configuration file: 7540 simple as using the following assignment in a configuration file::
5954 ::
5955 7541
5956 VIRTUAL-RUNTIME_dev_manager = "udev" 7542 VIRTUAL-RUNTIME_dev_manager = "udev"
5957 7543
@@ -5959,103 +7545,143 @@ system and gives an overview of their function and contents.
5959 :term:`PRSERV_HOST` 7545 :term:`PRSERV_HOST`
5960 The network based :term:`PR` service host and port. 7546 The network based :term:`PR` service host and port.
5961 7547
5962 The ``conf/local.conf.sample.extended`` configuration file in the 7548 The ``conf/templates/default/local.conf.sample.extended`` configuration
5963 :term:`Source Directory` shows how the 7549 file in the :term:`Source Directory` shows how the :term:`PRSERV_HOST`
5964 ``PRSERV_HOST`` variable is set: 7550 variable is set::
5965 ::
5966 7551
5967 PRSERV_HOST = "localhost:0" 7552 PRSERV_HOST = "localhost:0"
5968 7553
5969 You must 7554 You must
5970 set the variable if you want to automatically start a local :ref:`PR 7555 set the variable if you want to automatically start a local :ref:`PR
5971 service <dev-manual/common-tasks:working with a pr service>`. You can 7556 service <dev-manual/packages:working with a pr service>`. You can
5972 set ``PRSERV_HOST`` to other values to use a remote PR service. 7557 set :term:`PRSERV_HOST` to other values to use a remote PR service.
5973 7558
7559 :term:`PRSERV_UPSTREAM`
7560 This variable can be used to specify an upstream PR server for the local
7561 PR server to connect to, in the form of ``host:port``.
7562
7563 This makes it possible to implement local fixes to an upstream package.
5974 7564
5975 :term:`PSEUDO_IGNORE_PATHS` 7565 :term:`PSEUDO_IGNORE_PATHS`
5976 A comma-separated (without spaces) list of path prefixes that should be ignored 7566 A comma-separated (without spaces) list of path prefixes that should be ignored
5977 by pseudo when monitoring and recording file operations, in order to avoid 7567 by pseudo when monitoring and recording file operations, in order to avoid
5978 problems with files being written to outside of the pseudo context and 7568 problems with files being written to outside of the pseudo context and
5979 reduce pseudo's overhead. A path is ignored if it matches any prefix in the list 7569 reduce pseudo's overhead. A path is ignored if it matches any prefix in the list
5980 and can include partial directory (or file) names. 7570 and can include partial directory (or file) names. In case a path prefix is
7571 present in both :term:`PSEUDO_IGNORE_PATHS` and in :term:`PSEUDO_INCLUDE_PATHS`,
7572 :term:`PSEUDO_INCLUDE_PATHS` takes precedence.
7573
7574 :term:`PSEUDO_INCLUDE_PATHS`
7575 A comma-separated (without spaces) list of path prefixes that should be included
7576 by pseudo when monitoring and recording file operations, in order to avoid
7577 problems with files being written to outside of the pseudo context and
7578 reduce :ref:`pseudo <overview-manual/concepts:Fakeroot and Pseudo>`'s overhead.
7579 A path is included if it matches any prefix in the list and can include
7580 partial directory (or file) names. In case a path prefix is present in both
7581 :term:`PSEUDO_IGNORE_PATHS` and in :term:`PSEUDO_INCLUDE_PATHS`,
7582 :term:`PSEUDO_INCLUDE_PATHS` takes precedence.
5981 7583
5982 7584
5983 :term:`PTEST_ENABLED` 7585 :term:`PTEST_ENABLED`
5984 Specifies whether or not :ref:`Package 7586 Specifies whether or not :ref:`Package
5985 Test <dev-manual/common-tasks:testing packages with ptest>` (ptest) 7587 Test <test-manual/ptest:testing packages with ptest>` (ptest)
5986 functionality is enabled when building a recipe. You should not set 7588 functionality is enabled when building a recipe. You should not set
5987 this variable directly. Enabling and disabling building Package Tests 7589 this variable directly. Enabling and disabling building Package Tests
5988 at build time should be done by adding "ptest" to (or removing it 7590 at build time should be done by adding "ptest" to (or removing it
5989 from) :term:`DISTRO_FEATURES`. 7591 from) :term:`DISTRO_FEATURES`.
5990 7592
7593 :term:`PTEST_PYTEST_DIR`
7594 Within the :ref:`ref-classes-ptest-python-pytest` class, the
7595 :term:`PTEST_PYTEST_DIR` variable represents the path within the source
7596 tree of a Python package holding the unit tests to be run with the
7597 `pytest <https://docs.pytest.org>`__ framework. The default value for this
7598 variable is ``tests``.
7599
7600 For more information, see
7601 the :ref:`ref-classes-ptest-python-pytest` class documentation.
7602
5991 :term:`PV` 7603 :term:`PV`
5992 The version of the recipe. The version is normally extracted from the 7604 The version of the recipe. The version is normally extracted from the
5993 recipe filename. For example, if the recipe is named 7605 recipe filename. For example, if the recipe is named
5994 ``expat_2.0.1.bb``, then the default value of ``PV`` will be "2.0.1". 7606 ``expat_2.0.1.bb``, then the default value of :term:`PV` will be "2.0.1".
5995 ``PV`` is generally not overridden within a recipe unless it is 7607 :term:`PV` is generally not overridden within a recipe unless it is
5996 building an unstable (i.e. development) version from a source code 7608 building an unstable (i.e. development) version from a source code
5997 repository (e.g. Git or Subversion). 7609 repository (e.g. Git or Subversion).
5998 7610
5999 ``PV`` is the default value of the :term:`PKGV` variable. 7611 :term:`PV` is the default value of the :term:`PKGV` variable.
7612
7613 :term:`PYPI_PACKAGE`
7614 When inheriting the :ref:`ref-classes-pypi` class, specifies the
7615 `PyPI <https://pypi.org/>`__ package name to be built. The default value
7616 is set based upon :term:`BPN` (stripping any "python-" or "python3-"
7617 prefix off if present), however for some packages it will need to be set
7618 explicitly if that will not match the package name (e.g. where the
7619 package name has a prefix, underscores, uppercase letters etc.)
7620
7621 :term:`PYPI_PACKAGE_EXT`
7622 When inheriting the :ref:`ref-classes-pypi` class, specifies the
7623 file extension to use when fetching a package from `PyPI
7624 <https://pypi.org/>`__. Default is ``tar.gz``.
7625
7626 :term:`PYPI_SRC_URI`
7627 When inheriting the :ref:`ref-classes-pypi` class, specifies the
7628 full `pythonhosted <https://files.pythonhosted.org/>`__ URI for
7629 fetching the package to be built. The default value is constructed
7630 based upon :term:`PYPI_PACKAGE`, :term:`PYPI_PACKAGE_EXT`, and
7631 :term:`PV`. Most recipes will not need to set this variable unless
7632 they are building an unstable (i.e. development) version.
6000 7633
6001 :term:`PYTHON_ABI` 7634 :term:`PYTHON_ABI`
6002 When used by recipes that inherit the 7635 When used by recipes that inherit the :ref:`ref-classes-setuptools3`
6003 :ref:`distutils3 <ref-classes-distutils3>`, 7636 class, denotes the Application Binary Interface (ABI) currently in use
6004 :ref:`setuptools3 <ref-classes-setuptools3>`, 7637 for Python. By default, the ABI is "m". You do not have to set this
6005 :ref:`distutils <ref-classes-distutils>`, or 7638 variable as the OpenEmbedded build system sets it for you.
6006 :ref:`setuptools <ref-classes-setuptools>` classes, denotes the
6007 Application Binary Interface (ABI) currently in use for Python. By
6008 default, the ABI is "m". You do not have to set this variable as the
6009 OpenEmbedded build system sets it for you.
6010 7639
6011 The OpenEmbedded build system uses the ABI to construct directory 7640 The OpenEmbedded build system uses the ABI to construct directory
6012 names used when installing the Python headers and libraries in 7641 names used when installing the Python headers and libraries in
6013 sysroot (e.g. ``.../python3.3m/...``). 7642 sysroot (e.g. ``.../python3.3m/...``).
6014 7643
6015 Recipes that inherit the ``distutils`` class during cross-builds also 7644 :term:`QA_EMPTY_DIRS`
6016 use this variable to locate the headers and libraries of the 7645 Specifies a list of directories that are expected to be empty when
6017 appropriate Python that the extension is targeting. 7646 packaging; if ``empty-dirs`` appears in :term:`ERROR_QA` or
7647 :term:`WARN_QA` these will be checked and an error or warning
7648 (respectively) will be produced.
6018 7649
6019 :term:`PYTHON_PN` 7650 The default :term:`QA_EMPTY_DIRS` value is set in
6020 When used by recipes that inherit the 7651 :ref:`insane.bbclass <ref-classes-insane>`.
6021 `distutils3 <ref-classes-distutils3>`,
6022 :ref:`setuptools3 <ref-classes-setuptools3>`,
6023 :ref:`distutils <ref-classes-distutils>`, or
6024 :ref:`setuptools <ref-classes-setuptools>` classes, specifies the
6025 major Python version being built. For Python 3.x, ``PYTHON_PN`` would
6026 be "python3". You do not have to set this variable as the
6027 OpenEmbedded build system automatically sets it for you.
6028 7652
6029 The variable allows recipes to use common infrastructure such as the 7653 :term:`QA_EMPTY_DIRS_RECOMMENDATION`
6030 following: 7654 Specifies a recommendation for why a directory must be empty,
6031 :: 7655 which will be included in the error message if a specific directory
7656 is found to contain files. Must be overridden with the directory
7657 path to match on.
6032 7658
6033 DEPENDS += "${PYTHON_PN}-native" 7659 If no recommendation is specified for a directory, then the default
7660 "but it is expected to be empty" will be used.
6034 7661
6035 In the previous example, 7662 An example message shows if files were present in '/dev'::
6036 the version of the dependency is ``PYTHON_PN``. 7663
7664 QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime"
6037 7665
6038 :term:`RANLIB` 7666 :term:`RANLIB`
6039 The minimal command and arguments to run ``ranlib``. 7667 The minimal command and arguments to run :manpage:`ranlib <ranlib(1)>`.
6040 7668
6041 :term:`RCONFLICTS` 7669 :term:`RCONFLICTS`
6042 The list of packages that conflict with packages. Note that packages 7670 The list of packages that conflict with packages. Note that packages
6043 will not be installed if conflicting packages are not first removed. 7671 will not be installed if conflicting packages are not first removed.
6044 7672
6045 Like all package-controlling variables, you must always use them in 7673 Like all package-controlling variables, you must always use them in
6046 conjunction with a package name override. Here is an example: 7674 conjunction with a package name override. Here is an example::
6047 ::
6048 7675
6049 RCONFLICTS_${PN} = "another_conflicting_package_name" 7676 RCONFLICTS:${PN} = "another_conflicting_package_name"
6050 7677
6051 BitBake, which the OpenEmbedded build system uses, supports 7678 BitBake, which the OpenEmbedded build system uses, supports
6052 specifying versioned dependencies. Although the syntax varies 7679 specifying versioned dependencies. Although the syntax varies
6053 depending on the packaging format, BitBake hides these differences 7680 depending on the packaging format, BitBake hides these differences
6054 from you. Here is the general syntax to specify versions with the 7681 from you. Here is the general syntax to specify versions with the
6055 ``RCONFLICTS`` variable: 7682 :term:`RCONFLICTS` variable::
6056 ::
6057 7683
6058 RCONFLICTS_${PN} = "package (operator version)" 7684 RCONFLICTS:${PN} = "package (operator version)"
6059 7685
6060 For ``operator``, you can specify the following: 7686 For ``operator``, you can specify the following:
6061 7687
@@ -6066,32 +7692,30 @@ system and gives an overview of their function and contents.
6066 - >= 7692 - >=
6067 7693
6068 For example, the following sets up a dependency on version 1.2 or 7694 For example, the following sets up a dependency on version 1.2 or
6069 greater of the package ``foo``: 7695 greater of the package ``foo``::
6070 ::
6071 7696
6072 RCONFLICTS_${PN} = "foo (>= 1.2)" 7697 RCONFLICTS:${PN} = "foo (>= 1.2)"
6073 7698
6074 :term:`RDEPENDS` 7699 :term:`RDEPENDS`
6075 Lists runtime dependencies of a package. These dependencies are other 7700 Lists runtime dependencies of a package. These dependencies are other
6076 packages that must be installed in order for the package to function 7701 packages that must be installed in order for the package to function
6077 correctly. As an example, the following assignment declares that the 7702 correctly. As an example, the following assignment declares that the
6078 package ``foo`` needs the packages ``bar`` and ``baz`` to be 7703 package ``foo`` needs the packages ``bar`` and ``baz`` to be
6079 installed: 7704 installed::
6080 ::
6081 7705
6082 RDEPENDS_foo = "bar baz" 7706 RDEPENDS:foo = "bar baz"
6083 7707
6084 The most common types of package 7708 The most common types of package
6085 runtime dependencies are automatically detected and added. Therefore, 7709 runtime dependencies are automatically detected and added. Therefore,
6086 most recipes do not need to set ``RDEPENDS``. For more information, 7710 most recipes do not need to set :term:`RDEPENDS`. For more information,
6087 see the 7711 see the
6088 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 7712 ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6089 section in the Yocto Project Overview and Concepts Manual. 7713 section in the Yocto Project Overview and Concepts Manual.
6090 7714
6091 The practical effect of the above ``RDEPENDS`` assignment is that 7715 The practical effect of the above :term:`RDEPENDS` assignment is that
6092 ``bar`` and ``baz`` will be declared as dependencies inside the 7716 ``bar`` and ``baz`` will be declared as dependencies inside the
6093 package ``foo`` when it is written out by one of the 7717 package ``foo`` when it is written out by one of the
6094 :ref:`do_package_write_\* <ref-tasks-package_write_deb>` tasks. 7718 :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks.
6095 Exactly how this is done depends on which package format is used, 7719 Exactly how this is done depends on which package format is used,
6096 which is determined by 7720 which is determined by
6097 :term:`PACKAGE_CLASSES`. When the 7721 :term:`PACKAGE_CLASSES`. When the
@@ -6099,59 +7723,57 @@ system and gives an overview of their function and contents.
6099 also install the packages on which it depends. 7723 also install the packages on which it depends.
6100 7724
6101 To ensure that the packages ``bar`` and ``baz`` get built, the 7725 To ensure that the packages ``bar`` and ``baz`` get built, the
6102 previous ``RDEPENDS`` assignment also causes a task dependency to be 7726 previous :term:`RDEPENDS` assignment also causes a task dependency to be
6103 added. This dependency is from the recipe's 7727 added. This dependency is from the recipe's
6104 :ref:`ref-tasks-build` (not to be confused with 7728 :ref:`ref-tasks-build` (not to be confused with
6105 :ref:`ref-tasks-compile`) task to the 7729 :ref:`ref-tasks-compile`) task to the
6106 ``do_package_write_*`` task of the recipes that build ``bar`` and 7730 :ref:`do_package_write_* <ref-tasks-package_write_deb>` task of the recipes that build ``bar`` and
6107 ``baz``. 7731 ``baz``.
6108 7732
6109 The names of the packages you list within ``RDEPENDS`` must be the 7733 The names of the packages you list within :term:`RDEPENDS` must be the
6110 names of other packages - they cannot be recipe names. Although 7734 names of other packages --- they cannot be recipe names. Although
6111 package names and recipe names usually match, the important point 7735 package names and recipe names usually match, the important point
6112 here is that you are providing package names within the ``RDEPENDS`` 7736 here is that you are providing package names within the :term:`RDEPENDS`
6113 variable. For an example of the default list of packages created from 7737 variable. For an example of the default list of packages created from
6114 a recipe, see the :term:`PACKAGES` variable. 7738 a recipe, see the :term:`PACKAGES` variable.
6115 7739
6116 Because the ``RDEPENDS`` variable applies to packages being built, 7740 Because the :term:`RDEPENDS` variable applies to packages being built,
6117 you should always use the variable in a form with an attached package 7741 you should always use the variable in a form with an attached package
6118 name (remember that a single recipe can build multiple packages). For 7742 name (remember that a single recipe can build multiple packages). For
6119 example, suppose you are building a development package that depends 7743 example, suppose you are building a development package that depends
6120 on the ``perl`` package. In this case, you would use the following 7744 on the ``perl`` package. In this case, you would use the following
6121 ``RDEPENDS`` statement: 7745 :term:`RDEPENDS` statement::
6122 ::
6123 7746
6124 RDEPENDS_${PN}-dev += "perl" 7747 RDEPENDS:${PN}-dev += "perl"
6125 7748
6126 In the example, 7749 In the example,
6127 the development package depends on the ``perl`` package. Thus, the 7750 the development package depends on the ``perl`` package. Thus, the
6128 ``RDEPENDS`` variable has the ``${PN}-dev`` package name as part of 7751 :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part of
6129 the variable. 7752 the variable.
6130 7753
6131 .. note:: 7754 .. note::
6132 7755
6133 ``RDEPENDS_${PN}-dev`` includes ``${``\ :term:`PN`\ ``}`` 7756 ``RDEPENDS:${PN}-dev`` includes ``${``\ :term:`PN`\ ``}``
6134 by default. This default is set in the BitBake configuration file 7757 by default. This default is set in the BitBake configuration file
6135 (``meta/conf/bitbake.conf``). Be careful not to accidentally remove 7758 (``meta/conf/bitbake.conf``). Be careful not to accidentally remove
6136 ``${PN}`` when modifying ``RDEPENDS_${PN}-dev``. Use the "+=" operator 7759 ``${PN}`` when modifying ``RDEPENDS:${PN}-dev``. Use the "+=" operator
6137 rather than the "=" operator. 7760 rather than the "=" operator.
6138 7761
6139 The package names you use with ``RDEPENDS`` must appear as they would 7762 The package names you use with :term:`RDEPENDS` must appear as they would
6140 in the ``PACKAGES`` variable. The :term:`PKG` variable 7763 in the :term:`PACKAGES` variable. The :term:`PKG` variable
6141 allows a different name to be used for the final package (e.g. the 7764 allows a different name to be used for the final package (e.g. the
6142 :ref:`debian <ref-classes-debian>` class uses this to rename 7765 :ref:`ref-classes-debian` class uses this to rename
6143 packages), but this final package name cannot be used with 7766 packages), but this final package name cannot be used with
6144 ``RDEPENDS``, which makes sense as ``RDEPENDS`` is meant to be 7767 :term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be
6145 independent of the package format used. 7768 independent of the package format used.
6146 7769
6147 BitBake, which the OpenEmbedded build system uses, supports 7770 BitBake, which the OpenEmbedded build system uses, supports
6148 specifying versioned dependencies. Although the syntax varies 7771 specifying versioned dependencies. Although the syntax varies
6149 depending on the packaging format, BitBake hides these differences 7772 depending on the packaging format, BitBake hides these differences
6150 from you. Here is the general syntax to specify versions with the 7773 from you. Here is the general syntax to specify versions with the
6151 ``RDEPENDS`` variable: 7774 :term:`RDEPENDS` variable::
6152 ::
6153 7775
6154 RDEPENDS_${PN} = "package (operator version)" 7776 RDEPENDS:${PN} = "package (operator version)"
6155 7777
6156 For ``operator``, you can specify the following: 7778 For ``operator``, you can specify the following:
6157 7779
@@ -6165,43 +7787,154 @@ system and gives an overview of their function and contents.
6165 7787
6166 .. note:: 7788 .. note::
6167 7789
6168 You can use ``EXTENDPKGV`` to provide a full package version 7790 You can use :term:`EXTENDPKGV` to provide a full package version
6169 specification. 7791 specification.
6170 7792
6171 For example, the following sets up a dependency on version 1.2 or 7793 For example, the following sets up a dependency on version 1.2 or
6172 greater of the package ``foo``: 7794 greater of the package ``foo``::
6173 :: 7795
7796 RDEPENDS:${PN} = "foo (>= 1.2)"
7797
7798 For information on build-time dependencies, see the :term:`DEPENDS`
7799 variable. You can also see the
7800 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
7801 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
7802 BitBake User Manual for additional information on tasks and dependencies.
7803
7804 :term:`READELF`
7805 The minimal command and arguments to run :manpage:`readelf <readelf(1)>`.
7806
7807 :term:`RECIPE_MAINTAINER`
7808 This variable defines the name and e-mail address of the maintainer of a
7809 recipe. Such information can be used by human users submitted changes,
7810 and by automated tools to send notifications, for example about
7811 vulnerabilities or source updates.
7812
7813 The variable can be defined in a global distribution :oe_git:`maintainers.inc
7814 </openembedded-core/tree/meta/conf/distro/include/maintainers.inc>` file::
7815
7816 meta/conf/distro/include/maintainers.inc:RECIPE_MAINTAINER:pn-sysvinit = "Ross Burton <ross.burton@arm.com>"
7817
7818 It can also be directly defined in a recipe,
7819 for example in the ``libgpiod`` one::
7820
7821 RECIPE_MAINTAINER = "Bartosz Golaszewski <brgl@bgdev.pl>"
7822
7823 :term:`RECIPE_NO_UPDATE_REASON`
7824 If a recipe should not be replaced by a more recent upstream version,
7825 putting the reason why in this variable in a recipe allows
7826 ``devtool check-upgrade-status`` command to display it, as explained
7827 in the ":ref:`ref-manual/devtool-reference:checking on the upgrade status of a recipe`"
7828 section.
7829
7830 :term:`RECIPE_SYSROOT`
7831 This variable points to the directory that holds all files populated from
7832 recipes specified in :term:`DEPENDS`. As the name indicates,
7833 think of this variable as a custom root (``/``) for the recipe that will be
7834 used by the compiler in order to find headers and other files needed to complete
7835 its job.
7836
7837 This variable is related to :term:`STAGING_DIR_HOST` or :term:`STAGING_DIR_TARGET`
7838 according to the type of the recipe and the build target.
7839
7840 To better understand this variable, consider the following examples:
7841
7842 - For ``#include <header.h>``, ``header.h`` should be in ``"${RECIPE_SYSROOT}/usr/include"``
7843
7844 - For ``-lexample``, ``libexample.so`` should be in ``"${RECIPE_SYSROOT}/lib"``
7845 or other library sysroot directories.
7846
7847 The default value is ``"${WORKDIR}/recipe-sysroot"``.
7848 Do not modify it.
7849
7850 :term:`RECIPE_SYSROOT_NATIVE`
7851 This is similar to :term:`RECIPE_SYSROOT` but the populated files are from
7852 ``-native`` recipes. This allows a recipe built for the target machine to
7853 use ``native`` tools.
7854
7855 This variable is related to :term:`STAGING_DIR_NATIVE`.
7856
7857 The default value is ``"${WORKDIR}/recipe-sysroot-native"``.
7858 Do not modify it.
6174 7859
6175 RDEPENDS_${PN} = "foo (>= 1.2)" 7860 :term:`RECIPE_UPGRADE_EXTRA_TASKS`
7861 When upgrading a recipe with ``devtool upgrade``, the variable
7862 :term:`RECIPE_UPGRADE_EXTRA_TASKS` specifies a space-delimited list of
7863 tasks to run after the new sources have been unpacked.
6176 7864
6177 For information on build-time dependencies, see the 7865 For some recipes, after the new source has been unpacked, additional tasks
6178 :term:`DEPENDS` variable. You can also see the 7866 may need to be run during an upgrade. A good example of this is recipes
6179 ":ref:`Tasks <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:tasks>`" and 7867 which inherit :ref:`ref-classes-cargo-update-recipe-crates`, where the
6180 ":ref:`Dependencies <bitbake:bitbake-user-manual/bitbake-user-manual-execution:dependencies>`" sections in the 7868 `do_update_crates` task needs to be run whenever Cargo.toml/Cargo.lock have
6181 BitBake User Manual for additional information on tasks and 7869 changed in the source.
6182 dependencies. 7870
7871 :term:`REPODIR`
7872 See :term:`bitbake:REPODIR` in the BitBake manual.
6183 7873
6184 :term:`REQUIRED_DISTRO_FEATURES` 7874 :term:`REQUIRED_DISTRO_FEATURES`
6185 When inheriting the 7875 When inheriting the :ref:`ref-classes-features_check`
6186 :ref:`features_check <ref-classes-features_check>`
6187 class, this variable identifies distribution features that must exist 7876 class, this variable identifies distribution features that must exist
6188 in the current configuration in order for the OpenEmbedded build 7877 in the current configuration in order for the OpenEmbedded build
6189 system to build the recipe. In other words, if the 7878 system to build the recipe. In other words, if the
6190 ``REQUIRED_DISTRO_FEATURES`` variable lists a feature that does not 7879 :term:`REQUIRED_DISTRO_FEATURES` variable lists a feature that does not
6191 appear in ``DISTRO_FEATURES`` within the current configuration, then 7880 appear in :term:`DISTRO_FEATURES` within the current configuration, then
6192 the recipe will be skipped, and if the build system attempts to build 7881 the recipe will be skipped, and if the build system attempts to build
6193 the recipe then an error will be triggered. 7882 the recipe then an error will be triggered.
6194 7883
7884 :term:`REQUIRED_VERSION`
7885 If there are multiple versions of a recipe available, this variable
7886 determines which version should be given preference.
7887 :term:`REQUIRED_VERSION` works in exactly the same manner as
7888 :term:`PREFERRED_VERSION`, except that if the specified version is not
7889 available then an error message is shown and the build fails
7890 immediately.
7891
7892 If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set
7893 for the same recipe, the :term:`REQUIRED_VERSION` value applies.
7894
7895 :term:`RETAIN_DIRS_ALWAYS`
7896 When inheriting the :ref:`ref-classes-retain` class, this variable holds
7897 space-separated recipe-specific directories to always save in a tarball
7898 whether the recipe build has failed or not.
7899
7900 :term:`RETAIN_DIRS_FAILURE`
7901 When inheriting the :ref:`ref-classes-retain` class, this variable holds
7902 space-separated recipe-specific directories to save in a tarball on
7903 failure of the recipe's build.
7904
7905 :term:`RETAIN_DIRS_GLOBAL_ALWAYS`
7906 When inheriting the :ref:`ref-classes-retain` class, this variable holds
7907 space-separated directories that are not specific to a recipe to save in a
7908 tarball whether the build has failed or not.
7909
7910 :term:`RETAIN_DIRS_GLOBAL_FAILURE`
7911 When inheriting the :ref:`ref-classes-retain` class, this variable holds
7912 space-separated directories that are not specific to a recipe to save in a
7913 tarball on build failure.
7914
7915 :term:`RETAIN_ENABLED`
7916 Disables the creation of a tarball of the work directory done by the
7917 :ref:`ref-classes-retain` class. Can be set to specific recipes to disable
7918 the class when the class was inherited globally with :term:`INHERIT`.
7919
7920 :term:`RETAIN_OUTDIR`
7921 When inheriting the :ref:`ref-classes-retain` class, this variable
7922 specifies the directory where to save the tarball of the work directory.
7923 The default directory is ``${TMPDIR}/retain``.
7924
7925 :term:`RETAIN_TARBALL_SUFFIX`
7926 When inheriting the :ref:`ref-classes-retain` class, this variable
7927 specifies the suffix of the tarball of the work directory. The default
7928 suffix is ``${DATETIME}.tar.gz``.
7929
6195 :term:`RM_WORK_EXCLUDE` 7930 :term:`RM_WORK_EXCLUDE`
6196 With ``rm_work`` enabled, this variable specifies a list of recipes 7931 With :ref:`ref-classes-rm-work` enabled, this variable
6197 whose work directories should not be removed. See the 7932 specifies a list of recipes whose work directories should not be removed.
6198 ":ref:`rm_work.bbclass <ref-classes-rm-work>`" section for more 7933 See the ":ref:`ref-classes-rm-work`" section for more details.
6199 details.
6200 7934
6201 :term:`ROOT_HOME` 7935 :term:`ROOT_HOME`
6202 Defines the root home directory. By default, this directory is set as 7936 Defines the root home directory. By default, this directory is set as
6203 follows in the BitBake configuration file: 7937 follows in the BitBake configuration file::
6204 ::
6205 7938
6206 ROOT_HOME ??= "/home/root" 7939 ROOT_HOME ??= "/home/root"
6207 7940
@@ -6211,32 +7944,25 @@ system and gives an overview of their function and contents.
6211 prefer to have a read-only root filesystem and prefer to keep 7944 prefer to have a read-only root filesystem and prefer to keep
6212 writeable data in one place. 7945 writeable data in one place.
6213 7946
6214 You can override the default by setting the variable in any layer or 7947 When setting ``INIT_MANAGER = systemd``, the default will be set to::
6215 in the ``local.conf`` file. Because the default is set using a "weak"
6216 assignment (i.e. "??="), you can use either of the following forms to
6217 define your override:
6218 ::
6219 7948
6220 ROOT_HOME = "/root"
6221 ROOT_HOME ?= "/root" 7949 ROOT_HOME ?= "/root"
6222 7950
6223 These 7951 You can also override the default by setting the variable in your distro
6224 override examples use ``/root``, which is probably the most commonly 7952 configuration or in the ``local.conf`` file.
6225 used override.
6226 7953
6227 :term:`ROOTFS` 7954 :term:`ROOTFS`
6228 Indicates a filesystem image to include as the root filesystem. 7955 Indicates a filesystem image to include as the root filesystem.
6229 7956
6230 The ``ROOTFS`` variable is an optional variable used with the 7957 The :term:`ROOTFS` variable is an optional variable used with the
6231 :ref:`image-live <ref-classes-image-live>` class. 7958 :ref:`ref-classes-image-live` class.
6232 7959
6233 :term:`ROOTFS_POSTINSTALL_COMMAND` 7960 :term:`ROOTFS_POSTINSTALL_COMMAND`
6234 Specifies a list of functions to call after the OpenEmbedded build 7961 Specifies a list of functions to call after the OpenEmbedded build
6235 system has installed packages. You can specify functions separated by 7962 system has installed packages. You can specify functions separated by
6236 semicolons: 7963 spaces::
6237 ::
6238 7964
6239 ROOTFS_POSTINSTALL_COMMAND += "function; ... " 7965 ROOTFS_POSTINSTALL_COMMAND += "function"
6240 7966
6241 If you need to pass the root filesystem path to a command within a 7967 If you need to pass the root filesystem path to a command within a
6242 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7968 function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6247,10 +7973,9 @@ system and gives an overview of their function and contents.
6247 :term:`ROOTFS_POSTPROCESS_COMMAND` 7973 :term:`ROOTFS_POSTPROCESS_COMMAND`
6248 Specifies a list of functions to call once the OpenEmbedded build 7974 Specifies a list of functions to call once the OpenEmbedded build
6249 system has created the root filesystem. You can specify functions 7975 system has created the root filesystem. You can specify functions
6250 separated by semicolons: 7976 separated by spaces::
6251 ::
6252 7977
6253 ROOTFS_POSTPROCESS_COMMAND += "function; ... " 7978 ROOTFS_POSTPROCESS_COMMAND += "function"
6254 7979
6255 If you need to pass the root filesystem path to a command within a 7980 If you need to pass the root filesystem path to a command within a
6256 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7981 function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6263,10 +7988,9 @@ system and gives an overview of their function and contents.
6263 system has removed unnecessary packages. When runtime package 7988 system has removed unnecessary packages. When runtime package
6264 management is disabled in the image, several packages are removed 7989 management is disabled in the image, several packages are removed
6265 including ``base-passwd``, ``shadow``, and ``update-alternatives``. 7990 including ``base-passwd``, ``shadow``, and ``update-alternatives``.
6266 You can specify functions separated by semicolons: 7991 You can specify functions separated by spaces::
6267 ::
6268 7992
6269 ROOTFS_POSTUNINSTALL_COMMAND += "function; ... " 7993 ROOTFS_POSTUNINSTALL_COMMAND += "function"
6270 7994
6271 If you need to pass the root filesystem path to a command within a 7995 If you need to pass the root filesystem path to a command within a
6272 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7996 function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6277,10 +8001,9 @@ system and gives an overview of their function and contents.
6277 :term:`ROOTFS_PREPROCESS_COMMAND` 8001 :term:`ROOTFS_PREPROCESS_COMMAND`
6278 Specifies a list of functions to call before the OpenEmbedded build 8002 Specifies a list of functions to call before the OpenEmbedded build
6279 system has created the root filesystem. You can specify functions 8003 system has created the root filesystem. You can specify functions
6280 separated by semicolons: 8004 separated by spaces::
6281 ::
6282 8005
6283 ROOTFS_PREPROCESS_COMMAND += "function; ... " 8006 ROOTFS_PREPROCESS_COMMAND += "function"
6284 8007
6285 If you need to pass the root filesystem path to a command within a 8008 If you need to pass the root filesystem path to a command within a
6286 function, you can use ``${IMAGE_ROOTFS}``, which points to the 8009 function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6288,68 +8011,68 @@ system and gives an overview of their function and contents.
6288 :term:`IMAGE_ROOTFS` variable for more 8011 :term:`IMAGE_ROOTFS` variable for more
6289 information. 8012 information.
6290 8013
8014 :term:`RPMBUILD_EXTRA_PARAMS`
8015 Specifies extra user-defined parameters for the ``rpmbuild`` command.
8016
6291 :term:`RPROVIDES` 8017 :term:`RPROVIDES`
6292 A list of package name aliases that a package also provides. These 8018 A list of package name aliases that a package also provides. These
6293 aliases are useful for satisfying runtime dependencies of other 8019 aliases are useful for satisfying runtime dependencies of other
6294 packages both during the build and on the target (as specified by 8020 packages both during the build and on the target (as specified by
6295 ``RDEPENDS``). 8021 :term:`RDEPENDS`).
6296 8022
6297 .. note:: 8023 .. note::
6298 8024
6299 A package's own name is implicitly already in its ``RPROVIDES`` list. 8025 A package's own name is implicitly already in its :term:`RPROVIDES` list.
6300 8026
6301 As with all package-controlling variables, you must always use the 8027 As with all package-controlling variables, you must always use the
6302 variable in conjunction with a package name override. Here is an 8028 variable in conjunction with a package name override. Here is an
6303 example: 8029 example::
6304 ::
6305 8030
6306 RPROVIDES_${PN} = "widget-abi-2" 8031 RPROVIDES:${PN} = "widget-abi-2"
6307 8032
6308 :term:`RRECOMMENDS` 8033 :term:`RRECOMMENDS`
6309 A list of packages that extends the usability of a package being 8034 A list of packages that extends the usability of a package being
6310 built. The package being built does not depend on this list of 8035 built. The package being built does not depend on this list of
6311 packages in order to successfully build, but rather uses them for 8036 packages in order to successfully build, but rather uses them for
6312 extended usability. To specify runtime dependencies for packages, see 8037 extended usability. To specify runtime dependencies for packages, see
6313 the ``RDEPENDS`` variable. 8038 the :term:`RDEPENDS` variable.
6314 8039
6315 The package manager will automatically install the ``RRECOMMENDS`` 8040 The package manager will automatically install the :term:`RRECOMMENDS`
6316 list of packages when installing the built package. However, you can 8041 list of packages when installing the built package. However, you can
6317 prevent listed packages from being installed by using the 8042 prevent listed packages from being installed by using the
6318 :term:`BAD_RECOMMENDATIONS`, 8043 :term:`BAD_RECOMMENDATIONS`,
6319 :term:`NO_RECOMMENDATIONS`, and 8044 :term:`NO_RECOMMENDATIONS`, and
6320 :term:`PACKAGE_EXCLUDE` variables. 8045 :term:`PACKAGE_EXCLUDE` variables.
6321 8046
6322 Packages specified in ``RRECOMMENDS`` need not actually be produced. 8047 Packages specified in :term:`RRECOMMENDS` need not actually be produced.
6323 However, a recipe must exist that provides each package, either 8048 However, there must be a recipe providing each package, either
6324 through the :term:`PACKAGES` or 8049 through the :term:`PACKAGES` or
6325 :term:`PACKAGES_DYNAMIC` variables or the 8050 :term:`PACKAGES_DYNAMIC` variables or the
6326 :term:`RPROVIDES` variable, or an error will occur 8051 :term:`RPROVIDES` variable, or an error will occur
6327 during the build. If such a recipe does exist and the package is not 8052 during the build. If such a recipe does exist and the package is not
6328 produced, the build continues without error. 8053 produced, the build continues without error.
6329 8054
6330 Because the ``RRECOMMENDS`` variable applies to packages being built, 8055 Because the :term:`RRECOMMENDS` variable applies to packages being built,
6331 you should always attach an override to the variable to specify the 8056 you should always attach an override to the variable to specify the
6332 particular package whose usability is being extended. For example, 8057 particular package whose usability is being extended. For example,
6333 suppose you are building a development package that is extended to 8058 suppose you are building a development package that is extended to
6334 support wireless functionality. In this case, you would use the 8059 support wireless functionality. In this case, you would use the
6335 following: 8060 following::
6336 ::
6337 8061
6338 RRECOMMENDS_${PN}-dev += "wireless_package_name" 8062 RRECOMMENDS:${PN}-dev += "wireless_package_name"
6339 8063
6340 In the 8064 In the
6341 example, the package name (``${PN}-dev``) must appear as it would in 8065 example, the package name (``${PN}-dev``) must appear as it would in
6342 the ``PACKAGES`` namespace before any renaming of the output package 8066 the :term:`PACKAGES` namespace before any renaming of the output package
6343 by classes such as ``debian.bbclass``. 8067 by classes such as :ref:`ref-classes-debian`.
6344 8068
6345 BitBake, which the OpenEmbedded build system uses, supports 8069 BitBake, which the OpenEmbedded build system uses, supports
6346 specifying versioned recommends. Although the syntax varies depending 8070 specifying versioned recommends. Although the syntax varies depending
6347 on the packaging format, BitBake hides these differences from you. 8071 on the packaging format, BitBake hides these differences from you.
6348 Here is the general syntax to specify versions with the 8072 Here is the general syntax to specify versions with the
6349 ``RRECOMMENDS`` variable: 8073 :term:`RRECOMMENDS` variable::
6350 ::
6351 8074
6352 RRECOMMENDS_${PN} = "package (operator version)" 8075 RRECOMMENDS:${PN} = "package (operator version)"
6353 8076
6354 For ``operator``, you can specify the following: 8077 For ``operator``, you can specify the following:
6355 8078
@@ -6360,32 +8083,29 @@ system and gives an overview of their function and contents.
6360 - >= 8083 - >=
6361 8084
6362 For example, the following sets up a recommend on version 1.2 or 8085 For example, the following sets up a recommend on version 1.2 or
6363 greater of the package ``foo``: 8086 greater of the package ``foo``::
6364 ::
6365 8087
6366 RRECOMMENDS_${PN} = "foo (>= 1.2)" 8088 RRECOMMENDS:${PN} = "foo (>= 1.2)"
6367 8089
6368 :term:`RREPLACES` 8090 :term:`RREPLACES`
6369 A list of packages replaced by a package. The package manager uses 8091 A list of packages replaced by a package. The package manager uses
6370 this variable to determine which package should be installed to 8092 this variable to determine which package should be installed to
6371 replace other package(s) during an upgrade. In order to also have the 8093 replace other package(s) during an upgrade. In order to also have the
6372 other package(s) removed at the same time, you must add the name of 8094 other package(s) removed at the same time, you must add the name of
6373 the other package to the ``RCONFLICTS`` variable. 8095 the other package to the :term:`RCONFLICTS` variable.
6374 8096
6375 As with all package-controlling variables, you must use this variable 8097 As with all package-controlling variables, you must use this variable
6376 in conjunction with a package name override. Here is an example: 8098 in conjunction with a package name override. Here is an example::
6377 ::
6378 8099
6379 RREPLACES_${PN} = "other_package_being_replaced" 8100 RREPLACES:${PN} = "other_package_being_replaced"
6380 8101
6381 BitBake, which the OpenEmbedded build system uses, supports 8102 BitBake, which the OpenEmbedded build system uses, supports
6382 specifying versioned replacements. Although the syntax varies 8103 specifying versioned replacements. Although the syntax varies
6383 depending on the packaging format, BitBake hides these differences 8104 depending on the packaging format, BitBake hides these differences
6384 from you. Here is the general syntax to specify versions with the 8105 from you. Here is the general syntax to specify versions with the
6385 ``RREPLACES`` variable: 8106 :term:`RREPLACES` variable::
6386 ::
6387 8107
6388 RREPLACES_${PN} = "package (operator version)" 8108 RREPLACES:${PN} = "package (operator version)"
6389 8109
6390 For ``operator``, you can specify the following: 8110 For ``operator``, you can specify the following:
6391 8111
@@ -6396,10 +8116,9 @@ system and gives an overview of their function and contents.
6396 - >= 8116 - >=
6397 8117
6398 For example, the following sets up a replacement using version 1.2 8118 For example, the following sets up a replacement using version 1.2
6399 or greater of the package ``foo``: 8119 or greater of the package ``foo``::
6400 ::
6401 8120
6402 RREPLACES_${PN} = "foo (>= 1.2)" 8121 RREPLACES:${PN} = "foo (>= 1.2)"
6403 8122
6404 :term:`RSUGGESTS` 8123 :term:`RSUGGESTS`
6405 A list of additional packages that you can suggest for installation 8124 A list of additional packages that you can suggest for installation
@@ -6408,42 +8127,35 @@ system and gives an overview of their function and contents.
6408 8127
6409 As with all package-controlling variables, you must always use this 8128 As with all package-controlling variables, you must always use this
6410 variable in conjunction with a package name override. Here is an 8129 variable in conjunction with a package name override. Here is an
6411 example: 8130 example::
6412 ::
6413 8131
6414 RSUGGESTS_${PN} = "useful_package another_package" 8132 RSUGGESTS:${PN} = "useful_package another_package"
8133
8134 :term:`RUST_CHANNEL`
8135 Specifies which version of Rust to build - "stable", "beta" or "nightly".
8136 The default value is "stable". Set this at your own risk, as values other
8137 than "stable" are not guaranteed to work at a given time.
6415 8138
6416 :term:`S` 8139 :term:`S`
6417 The location in the :term:`Build Directory` where 8140 The location in the :term:`Build Directory` where
6418 unpacked recipe source code resides. By default, this directory is 8141 unpacked recipe source code resides. By default, this directory is
6419 ``${``\ :term:`WORKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``, 8142 ``${``\ :term:`UNPACKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``,
6420 where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe 8143 where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe
6421 version. If the source tarball extracts the code to a directory named 8144 version. If the source tarball extracts the code to a directory named
6422 anything other than ``${BPN}-${PV}``, or if the source code is 8145 anything other than ``${BPN}-${PV}``, or if the source code is
6423 fetched from an SCM such as Git or Subversion, then you must set 8146 fetched from an SCM such as Git or Subversion, then you must set
6424 ``S`` in the recipe so that the OpenEmbedded build system knows where 8147 :term:`S` in the recipe so that the OpenEmbedded build system knows where
6425 to find the unpacked source. 8148 to find the unpacked source.
6426 8149
6427 As an example, assume a :term:`Source Directory` 8150 As an example, assume a :term:`Source Directory`
6428 top-level folder named ``poky`` and a default Build Directory at 8151 top-level folder named ``poky`` and a default :term:`Build Directory` at
6429 ``poky/build``. In this case, the work directory the build system 8152 ``poky/build``. In this case, the work directory the build system
6430 uses to keep the unpacked recipe for ``db`` is the following: 8153 uses to keep the unpacked recipe for ``db`` is the following::
6431 ::
6432 8154
6433 poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19 8155 poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/sources/db-5.1.19
6434 8156
6435 The unpacked source code resides in the ``db-5.1.19`` folder. 8157 The unpacked source code resides in the ``db-5.1.19`` folder.
6436 8158
6437 This next example assumes a Git repository. By default, Git
6438 repositories are cloned to ``${WORKDIR}/git`` during
6439 :ref:`ref-tasks-fetch`. Since this path is different
6440 from the default value of ``S``, you must set it specifically so the
6441 source can be located:
6442 ::
6443
6444 SRC_URI = "git://path/to/repo.git"
6445 S = "${WORKDIR}/git"
6446
6447 :term:`SANITY_REQUIRED_UTILITIES` 8159 :term:`SANITY_REQUIRED_UTILITIES`
6448 Specifies a list of command-line utilities that should be checked for 8160 Specifies a list of command-line utilities that should be checked for
6449 during the initial sanity checking process when running BitBake. If 8161 during the initial sanity checking process when running BitBake. If
@@ -6455,7 +8167,7 @@ system and gives an overview of their function and contents.
6455 been tested against. Identifiers consist of the host distributor ID 8167 been tested against. Identifiers consist of the host distributor ID
6456 followed by the release, as reported by the ``lsb_release`` tool or 8168 followed by the release, as reported by the ``lsb_release`` tool or
6457 as read from ``/etc/lsb-release``. Separate the list items with 8169 as read from ``/etc/lsb-release``. Separate the list items with
6458 explicit newline characters (``\n``). If ``SANITY_TESTED_DISTROS`` is 8170 explicit newline characters (``\n``). If :term:`SANITY_TESTED_DISTROS` is
6459 not empty and the current value of 8171 not empty and the current value of
6460 :term:`NATIVELSBSTRING` does not appear in the 8172 :term:`NATIVELSBSTRING` does not appear in the
6461 list, then the build system reports a warning that indicates the 8173 list, then the build system reports a warning that indicates the
@@ -6465,12 +8177,41 @@ system and gives an overview of their function and contents.
6465 The target architecture for the SDK. Typically, you do not directly 8177 The target architecture for the SDK. Typically, you do not directly
6466 set this variable. Instead, use :term:`SDKMACHINE`. 8178 set this variable. Instead, use :term:`SDKMACHINE`.
6467 8179
8180 :term:`SDK_ARCHIVE_TYPE`
8181 Specifies the type of archive to create for the SDK. Valid values:
8182
8183 - ``tar.xz`` (default)
8184 - ``tar.zst``
8185 - ``7zip``
8186 - ``zip``
8187
8188 Only one archive type can be specified.
8189
8190 :term:`SDK_AS_ARCH`
8191 Specifies architecture-specific assembler flags when building
8192 :ref:`ref-classes-nativesdk` recipes. By default, the value of
8193 :term:`SDK_AS_ARCH` equals the one of :term:`BUILD_AS_ARCH`.
8194
8195 :term:`SDK_BUILDINFO_FILE`
8196 When using the :ref:`ref-classes-image-buildinfo` class,
8197 specifies the file in the SDK to write the build information into. The
8198 default value is "``/buildinfo``".
8199
8200 :term:`SDK_CC_ARCH`
8201 Specifies the architecture-specific C compiler flags when building
8202 :ref:`ref-classes-nativesdk` recipes. By default, the value of
8203 :term:`SDK_CC_ARCH` equals the one of :term:`BUILD_CC_ARCH`.
8204
8205 :term:`SDK_CUSTOM_TEMPLATECONF`
8206 When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to
8207 "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory`
8208 (:term:`TOPDIR`) then this will be copied into the SDK.
8209
6468 :term:`SDK_DEPLOY` 8210 :term:`SDK_DEPLOY`
6469 The directory set up and used by the 8211 The directory set up and used by the
6470 :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which 8212 :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the
6471 the SDK is deployed. The ``populate_sdk_base`` class defines 8213 SDK is deployed. The :ref:`populate_sdk_base <ref-classes-populate-sdk>`
6472 ``SDK_DEPLOY`` as follows: 8214 class defines :term:`SDK_DEPLOY` as follows::
6473 ::
6474 8215
6475 SDK_DEPLOY = "${TMPDIR}/deploy/sdk" 8216 SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
6476 8217
@@ -6478,15 +8219,14 @@ system and gives an overview of their function and contents.
6478 The parent directory used by the OpenEmbedded build system when 8219 The parent directory used by the OpenEmbedded build system when
6479 creating SDK output. The 8220 creating SDK output. The
6480 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines 8221 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines
6481 the variable as follows: 8222 the variable as follows::
6482 ::
6483 8223
6484 SDK_DIR = "${WORKDIR}/sdk" 8224 SDK_DIR = "${WORKDIR}/sdk"
6485 8225
6486 .. note:: 8226 .. note::
6487 8227
6488 The ``SDK_DIR`` directory is a temporary directory as it is part of 8228 The :term:`SDK_DIR` directory is a temporary directory as it is part of
6489 ``WORKDIR``. The final output directory is :term:`SDK_DEPLOY`. 8229 :term:`WORKDIR`. The final output directory is :term:`SDK_DEPLOY`.
6490 8230
6491 :term:`SDK_EXT_TYPE` 8231 :term:`SDK_EXT_TYPE`
6492 Controls whether or not shared state artifacts are copied into the 8232 Controls whether or not shared state artifacts are copied into the
@@ -6504,14 +8244,12 @@ system and gives an overview of their function and contents.
6504 The manifest file for the host part of the SDK. This file lists all 8244 The manifest file for the host part of the SDK. This file lists all
6505 the installed packages that make up the host part of the SDK. The 8245 the installed packages that make up the host part of the SDK. The
6506 file contains package information on a line-per-package basis as 8246 file contains package information on a line-per-package basis as
6507 follows: 8247 follows::
6508 ::
6509 8248
6510 packagename packagearch version 8249 packagename packagearch version
6511 8250
6512 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class 8251 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
6513 defines the manifest file as follows: 8252 defines the manifest file as follows::
6514 ::
6515 8253
6516 SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest" 8254 SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
6517 8255
@@ -6527,7 +8265,7 @@ system and gives an overview of their function and contents.
6527 8265
6528 .. note:: 8266 .. note::
6529 8267
6530 Enabling the ``SDK_INCLUDE_PKGDATA`` 8268 Enabling the :term:`SDK_INCLUDE_PKGDATA`
6531 variable significantly increases build time because all of world 8269 variable significantly increases build time because all of world
6532 needs to be built. Enabling the variable also slightly increases 8270 needs to be built. Enabling the variable also slightly increases
6533 the size of the extensible SDK. 8271 the size of the extensible SDK.
@@ -6541,82 +8279,26 @@ system and gives an overview of their function and contents.
6541 IDE or from other tools and you do not want to perform additional 8279 IDE or from other tools and you do not want to perform additional
6542 steps to install the toolchain. 8280 steps to install the toolchain.
6543 8281
6544 The ``SDK_INCLUDE_TOOLCHAIN`` variable defaults to "0" if 8282 The :term:`SDK_INCLUDE_TOOLCHAIN` variable defaults to "0" if
6545 ``SDK_EXT_TYPE`` is set to "minimal", and defaults to "1" if 8283 :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if
6546 ``SDK_EXT_TYPE`` is set to "full". 8284 :term:`SDK_EXT_TYPE` is set to "full".
6547
6548 :term:`SDK_INHERIT_BLACKLIST`
6549 A list of classes to remove from the :term:`INHERIT`
6550 value globally within the extensible SDK configuration. The
6551 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
6552 default value:
6553 ::
6554
6555 SDK_INHERIT_BLACKLIST ?= "buildhistory icecc"
6556
6557 Some classes are not generally applicable within the extensible SDK
6558 context. You can use this variable to disable those classes.
6559
6560 For additional information on how to customize the extensible SDK's
6561 configuration, see the
6562 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
6563 section in the Yocto Project Application Development and the
6564 Extensible Software Development Kit (eSDK) manual.
6565
6566 :term:`SDK_LOCAL_CONF_BLACKLIST`
6567 A list of variables not allowed through from the OpenEmbedded build
6568 system configuration into the extensible SDK configuration. Usually,
6569 these are variables that are specific to the machine on which the
6570 build system is running and thus would be potentially problematic
6571 within the extensible SDK.
6572
6573 By default, ``SDK_LOCAL_CONF_BLACKLIST`` is set in the
6574 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and
6575 excludes the following variables:
6576
6577 - :term:`CONF_VERSION`
6578 - :term:`BB_NUMBER_THREADS`
6579 - :term:`bitbake:BB_NUMBER_PARSE_THREADS`
6580 - :term:`PARALLEL_MAKE`
6581 - :term:`PRSERV_HOST`
6582 - :term:`SSTATE_MIRRORS` :term:`DL_DIR`
6583 - :term:`SSTATE_DIR` :term:`TMPDIR`
6584 - :term:`BB_SERVER_TIMEOUT`
6585
6586 For additional information on how to customize the extensible SDK's
6587 configuration, see the
6588 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
6589 section in the Yocto Project Application Development and the
6590 Extensible Software Development Kit (eSDK) manual.
6591
6592 :term:`SDK_LOCAL_CONF_WHITELIST`
6593 A list of variables allowed through from the OpenEmbedded build
6594 system configuration into the extensible SDK configuration. By
6595 default, the list of variables is empty and is set in the
6596 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class.
6597
6598 This list overrides the variables specified using the
6599 :term:`SDK_LOCAL_CONF_BLACKLIST`
6600 variable as well as any variables identified by automatic
6601 blacklisting due to the "/" character being found at the start of the
6602 value, which is usually indicative of being a path and thus might not
6603 be valid on the system where the SDK is installed.
6604 8285
6605 For additional information on how to customize the extensible SDK's 8286 :term:`SDK_LD_ARCH`
6606 configuration, see the 8287 Specifies architecture-specific linker flags when building
6607 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`" 8288 :ref:`ref-classes-nativesdk` recipes. By default, the value of
6608 section in the Yocto Project Application Development and the 8289 :term:`SDK_LD_ARCH` equals the one of :term:`BUILD_LD_ARCH`.
6609 Extensible Software Development Kit (eSDK) manual.
6610 8290
6611 :term:`SDK_NAME` 8291 :term:`SDK_NAME`
6612 The base name for SDK output files. The name is derived from the 8292 The base name for SDK output files. The default value (as set in
6613 :term:`DISTRO`, :term:`TCLIBC`, 8293 ``meta-poky/conf/distro/poky.conf``) is derived from the
6614 :term:`SDK_ARCH`, 8294 :term:`DISTRO`,
6615 :term:`IMAGE_BASENAME`, and 8295 :term:`TCLIBC`,
6616 :term:`TUNE_PKGARCH` variables: 8296 :term:`SDKMACHINE`,
6617 :: 8297 :term:`IMAGE_BASENAME`,
8298 :term:`TUNE_PKGARCH`, and
8299 :term:`MACHINE` variables::
6618 8300
6619 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}" 8301 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
6620 8302
6621 :term:`SDK_OS` 8303 :term:`SDK_OS`
6622 Specifies the operating system for which the SDK will be built. The 8304 Specifies the operating system for which the SDK will be built. The
@@ -6625,8 +8307,7 @@ system and gives an overview of their function and contents.
6625 :term:`SDK_OUTPUT` 8307 :term:`SDK_OUTPUT`
6626 The location used by the OpenEmbedded build system when creating SDK 8308 The location used by the OpenEmbedded build system when creating SDK
6627 output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` 8309 output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>`
6628 class defines the variable as follows: 8310 class defines the variable as follows::
6629 ::
6630 8311
6631 SDK_DIR = "${WORKDIR}/sdk" 8312 SDK_DIR = "${WORKDIR}/sdk"
6632 SDK_OUTPUT = "${SDK_DIR}/image" 8313 SDK_OUTPUT = "${SDK_DIR}/image"
@@ -6634,7 +8315,7 @@ system and gives an overview of their function and contents.
6634 8315
6635 .. note:: 8316 .. note::
6636 8317
6637 The ``SDK_OUTPUT`` directory is a temporary directory as it is part of 8318 The :term:`SDK_OUTPUT` directory is a temporary directory as it is part of
6638 :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is 8319 :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is
6639 :term:`SDK_DEPLOY`. 8320 :term:`SDK_DEPLOY`.
6640 8321
@@ -6642,13 +8323,15 @@ system and gives an overview of their function and contents.
6642 Specifies a list of architectures compatible with the SDK machine. 8323 Specifies a list of architectures compatible with the SDK machine.
6643 This variable is set automatically and should not normally be 8324 This variable is set automatically and should not normally be
6644 hand-edited. Entries are separated using spaces and listed in order 8325 hand-edited. Entries are separated using spaces and listed in order
6645 of priority. The default value for ``SDK_PACKAGE_ARCHS`` is "all any 8326 of priority. The default value for :term:`SDK_PACKAGE_ARCHS` is "all any
6646 noarch ${SDK_ARCH}-${SDKPKGSUFFIX}". 8327 noarch ${SDK_ARCH}-${SDKPKGSUFFIX}".
6647 8328
6648 :term:`SDK_POSTPROCESS_COMMAND` 8329 :term:`SDK_POSTPROCESS_COMMAND`
6649 Specifies a list of functions to call once the OpenEmbedded build 8330 Specifies a list of functions to call once the OpenEmbedded build
6650 system creates the SDK. You can specify functions separated by 8331 system creates the SDK. You can specify functions separated by
6651 semicolons: SDK_POSTPROCESS_COMMAND += "function; ... " 8332 spaces:
8333
8334 SDK_POSTPROCESS_COMMAND += "function"
6652 8335
6653 If you need to pass an SDK path to a command within a function, you 8336 If you need to pass an SDK path to a command within a function, you
6654 can use ``${SDK_DIR}``, which points to the parent directory used by 8337 can use ``${SDK_DIR}``, which points to the parent directory used by
@@ -6656,8 +8339,9 @@ system and gives an overview of their function and contents.
6656 :term:`SDK_DIR` variable for more information. 8339 :term:`SDK_DIR` variable for more information.
6657 8340
6658 :term:`SDK_PREFIX` 8341 :term:`SDK_PREFIX`
6659 The toolchain binary prefix used for ``nativesdk`` recipes. The 8342 The toolchain binary prefix used for
6660 OpenEmbedded build system uses the ``SDK_PREFIX`` value to set the 8343 :ref:`ref-classes-nativesdk` recipes. The
8344 OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the
6661 :term:`TARGET_PREFIX` when building 8345 :term:`TARGET_PREFIX` when building
6662 ``nativesdk`` recipes. The default value is "${SDK_SYS}-". 8346 ``nativesdk`` recipes. The default value is "${SDK_SYS}-".
6663 8347
@@ -6665,15 +8349,15 @@ system and gives an overview of their function and contents.
6665 A list of shared state tasks added to the extensible SDK. By default, 8349 A list of shared state tasks added to the extensible SDK. By default,
6666 the following tasks are added: 8350 the following tasks are added:
6667 8351
6668 - do_populate_lic 8352 - :ref:`ref-tasks-populate_lic`
6669 - do_package_qa 8353 - :ref:`ref-tasks-package_qa`
6670 - do_populate_sysroot 8354 - :ref:`ref-tasks-populate_sysroot`
6671 - do_deploy 8355 - :ref:`ref-tasks-deploy`
6672 8356
6673 Despite the default value of "" for the 8357 Despite the default value of "" for the
6674 ``SDK_RECRDEP_TASKS`` variable, the above four tasks are always added 8358 :term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added
6675 to the SDK. To specify tasks beyond these four, you need to use the 8359 to the SDK. To specify tasks beyond these four, you need to use the
6676 ``SDK_RECRDEP_TASKS`` variable (e.g. you are defining additional 8360 :term:`SDK_RECRDEP_TASKS` variable (e.g. you are defining additional
6677 tasks that are needed in order to build 8361 tasks that are needed in order to build
6678 :term:`SDK_TARGETS`). 8362 :term:`SDK_TARGETS`).
6679 8363
@@ -6684,21 +8368,19 @@ system and gives an overview of their function and contents.
6684 The OpenEmbedded build system automatically sets this variable based 8368 The OpenEmbedded build system automatically sets this variable based
6685 on :term:`SDK_ARCH`, 8369 on :term:`SDK_ARCH`,
6686 :term:`SDK_VENDOR`, and 8370 :term:`SDK_VENDOR`, and
6687 :term:`SDK_OS`. You do not need to set the ``SDK_SYS`` 8371 :term:`SDK_OS`. You do not need to set the :term:`SDK_SYS`
6688 variable yourself. 8372 variable yourself.
6689 8373
6690 :term:`SDK_TARGET_MANIFEST` 8374 :term:`SDK_TARGET_MANIFEST`
6691 The manifest file for the target part of the SDK. This file lists all 8375 The manifest file for the target part of the SDK. This file lists all
6692 the installed packages that make up the target part of the SDK. The 8376 the installed packages that make up the target part of the SDK. The
6693 file contains package information on a line-per-package basis as 8377 file contains package information on a line-per-package basis as
6694 follows: 8378 follows::
6695 ::
6696 8379
6697 packagename packagearch version 8380 packagename packagearch version
6698 8381
6699 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class 8382 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class
6700 defines the manifest file as follows: 8383 defines the manifest file as follows::
6701 ::
6702 8384
6703 SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest" 8385 SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
6704 8386
@@ -6710,7 +8392,7 @@ system and gives an overview of their function and contents.
6710 standard or extensible SDK installation. The default value is "${PN}" 8392 standard or extensible SDK installation. The default value is "${PN}"
6711 (i.e. the image from which the SDK is built). 8393 (i.e. the image from which the SDK is built).
6712 8394
6713 The ``SDK_TARGETS`` variable is an internal variable and typically 8395 The :term:`SDK_TARGETS` variable is an internal variable and typically
6714 would not be changed. 8396 would not be changed.
6715 8397
6716 :term:`SDK_TITLE` 8398 :term:`SDK_TITLE`
@@ -6718,19 +8400,22 @@ system and gives an overview of their function and contents.
6718 this title is based on the :term:`DISTRO_NAME` or 8400 this title is based on the :term:`DISTRO_NAME` or
6719 :term:`DISTRO` variable and is set in the 8401 :term:`DISTRO` variable and is set in the
6720 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as 8402 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
6721 follows: 8403 follows::
6722 ::
6723 8404
6724 SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK" 8405 SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
6725 8406
6726 For the default distribution "poky", 8407 For the default distribution "poky",
6727 ``SDK_TITLE`` is set to "Poky (Yocto Project Reference Distro)". 8408 :term:`SDK_TITLE` is set to "Poky (Yocto Project Reference Distro)".
6728 8409
6729 For information on how to change this default title, see the 8410 For information on how to change this default title, see the
6730 ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`" 8411 ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`"
6731 section in the Yocto Project Application Development and the 8412 section in the Yocto Project Application Development and the
6732 Extensible Software Development Kit (eSDK) manual. 8413 Extensible Software Development Kit (eSDK) manual.
6733 8414
8415 :term:`SDK_TOOLCHAIN_LANGS`
8416 Specifies programming languages to support in the SDK, as a
8417 space-separated list. Currently supported items are ``rust`` and ``go``.
8418
6734 :term:`SDK_UPDATE_URL` 8419 :term:`SDK_UPDATE_URL`
6735 An optional URL for an update server for the extensible SDK. If set, 8420 An optional URL for an update server for the extensible SDK. If set,
6736 the value is used as the default update server when running 8421 the value is used as the default update server when running
@@ -6740,29 +8425,32 @@ system and gives an overview of their function and contents.
6740 Specifies the name of the SDK vendor. 8425 Specifies the name of the SDK vendor.
6741 8426
6742 :term:`SDK_VERSION` 8427 :term:`SDK_VERSION`
6743 Specifies the version of the SDK. The distribution configuration file 8428 Specifies the version of the SDK. The Poky distribution configuration file
6744 (e.g. ``/meta-poky/conf/distro/poky.conf``) defines the 8429 (``/meta-poky/conf/distro/poky.conf``) sets the default
6745 ``SDK_VERSION`` as follows: 8430 :term:`SDK_VERSION` as follows::
6746 ::
6747 8431
6748 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${DATE}','snapshot')}" 8432 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
6749 8433
6750 For additional information, see the 8434 For additional information, see the
6751 :term:`DISTRO_VERSION` and 8435 :term:`DISTRO_VERSION` and
6752 :term:`DATE` variables. 8436 :term:`METADATA_REVISION` variables.
8437
8438 :term:`SDK_ZIP_OPTIONS`
8439 Specifies extra options to pass to the ``zip`` command when zipping the SDK
8440 (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is
8441 "-y".
6753 8442
6754 :term:`SDKEXTPATH` 8443 :term:`SDKEXTPATH`
6755 The default installation directory for the Extensible SDK. By 8444 The default installation directory for the Extensible SDK. By
6756 default, this directory is based on the :term:`DISTRO` 8445 default, this directory is based on the :term:`DISTRO`
6757 variable and is set in the 8446 variable and is set in the
6758 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as 8447 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as
6759 follows: 8448 follows::
6760 ::
6761 8449
6762 SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk" 8450 SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
6763 8451
6764 For the 8452 For the
6765 default distribution "poky", the ``SDKEXTPATH`` is set to "poky_sdk". 8453 default distribution "poky", the :term:`SDKEXTPATH` is set to "poky_sdk".
6766 8454
6767 For information on how to change this default directory, see the 8455 For information on how to change this default directory, see the
6768 ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`" 8456 ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`"
@@ -6770,32 +8458,33 @@ system and gives an overview of their function and contents.
6770 Extensible Software Development Kit (eSDK) manual. 8458 Extensible Software Development Kit (eSDK) manual.
6771 8459
6772 :term:`SDKIMAGE_FEATURES` 8460 :term:`SDKIMAGE_FEATURES`
6773 Equivalent to ``IMAGE_FEATURES``. However, this variable applies to 8461 Equivalent to :term:`IMAGE_FEATURES`. However, this variable applies to
6774 the SDK generated from an image using the following command: 8462 the SDK generated from an image using the following command::
6775 ::
6776 8463
6777 $ bitbake -c populate_sdk imagename 8464 $ bitbake -c populate_sdk imagename
6778 8465
6779 :term:`SDKMACHINE` 8466 :term:`SDKMACHINE`
6780 The machine for which the SDK is built. In other words, the SDK is 8467 The machine for which the SDK is built. In other words, the SDK is built
6781 built such that it runs on the target you specify with the 8468 such that it runs on the target you specify with the :term:`SDKMACHINE`
6782 ``SDKMACHINE`` value. The value points to a corresponding ``.conf`` 8469 value. The value points to a corresponding ``.conf`` file under
6783 file under ``conf/machine-sdk/``. 8470 ``conf/machine-sdk/`` in the enabled layers, for example ``aarch64``,
6784 8471 ``i586``, ``i686``, ``ppc64``, ``ppc64le``, and ``x86_64`` are
6785 You can use "i686" and "x86_64" as possible values for this variable. 8472 :oe_git:`available in OpenEmbedded-Core </openembedded-core/tree/meta/conf/machine-sdk>`.
6786 The variable defaults to "i686" and is set in the local.conf file in
6787 the Build Directory.
6788 ::
6789 8473
6790 SDKMACHINE ?= "i686" 8474 The variable defaults to :term:`BUILD_ARCH` so that SDKs are built for the
8475 architecture of the build machine.
6791 8476
6792 .. note:: 8477 .. note::
6793 8478
6794 You cannot set the ``SDKMACHINE`` 8479 You cannot set the :term:`SDKMACHINE`
6795 variable in your distribution configuration file. If you do, the 8480 variable in your distribution configuration file. If you do, the
6796 configuration will not take affect. 8481 configuration will not take effect.
6797 8482
6798 :term:`SDKPATH` 8483 :term:`SDKPATH`
8484 Defines the path used to collect the SDK components and build the
8485 installer.
8486
8487 :term:`SDKPATHINSTALL`
6799 Defines the path offered to the user for installation of the SDK that 8488 Defines the path offered to the user for installation of the SDK that
6800 is generated by the OpenEmbedded build system. The path appears as 8489 is generated by the OpenEmbedded build system. The path appears as
6801 the default location for installing the SDK when you run the SDK's 8490 the default location for installing the SDK when you run the SDK's
@@ -6805,7 +8494,7 @@ system and gives an overview of their function and contents.
6805 :term:`SDKTARGETSYSROOT` 8494 :term:`SDKTARGETSYSROOT`
6806 The full path to the sysroot used for cross-compilation within an SDK 8495 The full path to the sysroot used for cross-compilation within an SDK
6807 as it will be when installed into the default 8496 as it will be when installed into the default
6808 :term:`SDKPATH`. 8497 :term:`SDKPATHINSTALL`.
6809 8498
6810 :term:`SECTION` 8499 :term:`SECTION`
6811 The section in which packages should be categorized. Package 8500 The section in which packages should be categorized. Package
@@ -6816,50 +8505,37 @@ system and gives an overview of their function and contents.
6816 building for the target. The flags are passed through the default 8505 building for the target. The flags are passed through the default
6817 value of the :term:`TARGET_CFLAGS` variable. 8506 value of the :term:`TARGET_CFLAGS` variable.
6818 8507
6819 The ``SELECTED_OPTIMIZATION`` variable takes the value of 8508 The :term:`SELECTED_OPTIMIZATION` variable takes the value of
6820 ``FULL_OPTIMIZATION`` unless ``DEBUG_BUILD`` = "1". If that is the 8509 :term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which
6821 case, the value of ``DEBUG_OPTIMIZATION`` is used. 8510 case the value of :term:`DEBUG_OPTIMIZATION` is used.
6822
6823 :term:`SERIAL_CONSOLE`
6824 Defines a serial console (TTY) to enable using
6825 `getty <https://en.wikipedia.org/wiki/Getty_(Unix)>`__. Provide a
6826 value that specifies the baud rate followed by the TTY device name
6827 separated by a space. You cannot specify more than one TTY device:
6828 ::
6829
6830 SERIAL_CONSOLE = "115200 ttyS0"
6831
6832 .. note::
6833
6834 The ``SERIAL_CONSOLE`` variable is deprecated. Please use the
6835 :term:`SERIAL_CONSOLES` variable.
6836 8511
6837 :term:`SERIAL_CONSOLES` 8512 :term:`SERIAL_CONSOLES`
6838 Defines a serial console (TTY) to enable using 8513 Defines a serial console (TTY) to enable using
6839 `getty <https://en.wikipedia.org/wiki/Getty_(Unix)>`__. Provide a 8514 :wikipedia:`getty <Getty_(Unix)>`. Provide a value that specifies the
6840 value that specifies the baud rate followed by the TTY device name 8515 baud rate followed by the TTY device name separated by a semicolon.
6841 separated by a semicolon. Use spaces to separate multiple devices: 8516 Use spaces to separate multiple devices::
6842 ::
6843 8517
6844 SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1" 8518 SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
6845 8519
6846 :term:`SERIAL_CONSOLES_CHECK` 8520 :term:`SETUPTOOLS_BUILD_ARGS`
6847 Specifies serial consoles, which must be listed in 8521 When used by recipes that inherit the :ref:`ref-classes-setuptools3`
6848 :term:`SERIAL_CONSOLES`, to check against 8522 class, this variable can be used to specify additional arguments to be
6849 ``/proc/console`` before enabling them using getty. This variable 8523 passed to ``setup.py build`` in the ``setuptools3_do_compile()`` task.
6850 allows aliasing in the format: <device>:<alias>. If a device was
6851 listed as "sclp_line0" in ``/dev/`` and "ttyS0" was listed in
6852 ``/proc/console``, you would do the following: ::
6853 8524
6854 SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0" 8525 :term:`SETUPTOOLS_SETUP_PATH`
8526 When used by recipes that inherit the :ref:`ref-classes-setuptools3`
8527 class, this variable should be used to specify the directory in which
8528 the ``setup.py`` file is located if it is not at the root of the source
8529 tree (as specified by :term:`S`). For example, in a recipe where the
8530 sources are fetched from a Git repository and ``setup.py`` is in a
8531 ``python/pythonmodule`` subdirectory, you would have this::
6855 8532
6856 This variable is currently only supported with SysVinit (i.e. not 8533 SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule"
6857 with systemd).
6858 8534
6859 :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS` 8535 :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS`
6860 A list of recipe dependencies that should not be used to determine 8536 A list of recipe dependencies that should not be used to determine
6861 signatures of tasks from one recipe when they depend on tasks from 8537 signatures of tasks from one recipe when they depend on tasks from
6862 another recipe. For example: :: 8538 another recipe. For example::
6863 8539
6864 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2" 8540 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2"
6865 8541
@@ -6867,7 +8543,7 @@ system and gives an overview of their function and contents.
6867 8543
6868 You can use the special token ``"*"`` on the left-hand side of the 8544 You can use the special token ``"*"`` on the left-hand side of the
6869 dependency to match all recipes except the one on the right-hand 8545 dependency to match all recipes except the one on the right-hand
6870 side. Here is an example: :: 8546 side. Here is an example::
6871 8547
6872 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native" 8548 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native"
6873 8549
@@ -6897,6 +8573,53 @@ system and gives an overview of their function and contents.
6897 might break at runtime if the interface of the recipe was changed 8573 might break at runtime if the interface of the recipe was changed
6898 after the other had been built. 8574 after the other had been built.
6899 8575
8576 :term:`SIGGEN_LOCKEDSIGS`
8577 The list of locked tasks, with the form::
8578
8579 SIGGEN_LOCKEDSIGS += "<package>:<task>:<signature>"
8580
8581 If ``<signature>`` exists for the specified ``<task>`` and ``<package>``
8582 in the sstate cache, BitBake will use the cached output instead of
8583 rebuilding the ``<task>``. If it does not exist, BitBake will build the
8584 ``<task>`` and the sstate cache will be used next time.
8585
8586 Example::
8587
8588 SIGGEN_LOCKEDSIGS += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0"
8589
8590 You can obtain the signature of all the tasks for the recipe ``bc`` using::
8591
8592 bitbake -S none bc
8593
8594 Then you can look at files in ``build/tmp/stamps/<arch>/bc`` and look for
8595 files like: ``<PV>.do_compile.sigdata.09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0``.
8596
8597 Alternatively, you can also use :doc:`bblock </dev-manual/bblock>` to
8598 generate this line for you.
8599
8600 :term:`SIGGEN_LOCKEDSIGS_TASKSIG_CHECK`
8601 Specifies the debug level of task signature check. 3 levels are supported:
8602
8603 * ``info``: displays a "Note" message to remind the user that a task is locked
8604 and the current signature matches the locked one.
8605 * ``warn``: displays a "Warning" message if a task is locked and the current
8606 signature does not match the locked one.
8607 * ``error``: same as warn but displays an "Error" message and aborts.
8608
8609 :term:`SIGGEN_LOCKEDSIGS_TYPES`
8610 Allowed overrides for :term:`SIGGEN_LOCKEDSIGS`. This is mainly used
8611 for architecture specific locks. A common value for
8612 :term:`SIGGEN_LOCKEDSIGS_TYPES` is ``${PACKAGE_ARCHS}``::
8613
8614 SIGGEN_LOCKEDSIGS_TYPES += "${PACKAGE_ARCHS}"
8615
8616 SIGGEN_LOCKEDSIGS_core2-64 += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0"
8617 SIGGEN_LOCKEDSIGS_cortexa57 += "bc:do_compile:12178eb6d55ef602a8fe638e49862fd247e07b228f0f08967697b655bfe4bb61"
8618
8619 Here, the ``do_compile`` task from ``bc`` will be locked only for
8620 ``core2-64`` and ``cortexa57`` but not for other architectures such as
8621 ``mips32r2``.
8622
6900 :term:`SITEINFO_BITS` 8623 :term:`SITEINFO_BITS`
6901 Specifies the number of bits for the target system CPU. The value 8624 Specifies the number of bits for the target system CPU. The value
6902 should be either "32" or "64". 8625 should be either "32" or "64".
@@ -6912,15 +8635,27 @@ system and gives an overview of their function and contents.
6912 8635
6913 To enable file removal, set the variable to "1" in your 8636 To enable file removal, set the variable to "1" in your
6914 ``conf/local.conf`` configuration file in your: 8637 ``conf/local.conf`` configuration file in your:
6915 :term:`Build Directory`. 8638 :term:`Build Directory`::
6916 ::
6917 8639
6918 SKIP_FILEDEPS = "1" 8640 SKIP_FILEDEPS = "1"
6919 8641
8642 :term:`SKIP_RECIPE`
8643 Used to prevent the OpenEmbedded build system from building a given
8644 recipe. Specify the :term:`PN` value as a variable flag (``varflag``)
8645 and provide a reason, which will be reported when attempting to
8646 build the recipe.
8647
8648 To prevent a recipe from being built, use the :term:`SKIP_RECIPE`
8649 variable in your ``local.conf`` file or distribution configuration.
8650 Here is an example which prevents ``myrecipe`` from being built::
8651
8652 SKIP_RECIPE[myrecipe] = "Not supported by our organization."
8653
6920 :term:`SOC_FAMILY` 8654 :term:`SOC_FAMILY`
6921 Groups together machines based upon the same family of SOC (System On 8655 A colon-separated list grouping together machines based upon the same
6922 Chip). You typically set this variable in a common ``.inc`` file that 8656 family of SoC (System On Chip). You typically set this variable in a
6923 you include in the configuration files of all the machines. 8657 common ``.inc`` file that you include in the configuration files of all
8658 the machines.
6924 8659
6925 .. note:: 8660 .. note::
6926 8661
@@ -6933,7 +8668,7 @@ system and gives an overview of their function and contents.
6933 defined in the ``meta/conf/bitbake.conf`` configuration file. 8668 defined in the ``meta/conf/bitbake.conf`` configuration file.
6934 8669
6935 You will see this variable referenced in the default values of 8670 You will see this variable referenced in the default values of
6936 ``FILES_${PN}``. 8671 ``FILES:${PN}``.
6937 8672
6938 :term:`SOLIBSDEV` 8673 :term:`SOLIBSDEV`
6939 Defines the suffix for the development symbolic link (symlink) for 8674 Defines the suffix for the development symbolic link (symlink) for
@@ -6942,11 +8677,28 @@ system and gives an overview of their function and contents.
6942 ``meta/conf/bitbake.conf`` configuration file. 8677 ``meta/conf/bitbake.conf`` configuration file.
6943 8678
6944 You will see this variable referenced in the default values of 8679 You will see this variable referenced in the default values of
6945 ``FILES_${PN}-dev``. 8680 ``FILES:${PN}-dev``.
8681
8682 :term:`SOURCE_DATE_EPOCH`
8683 This defines a date expressed in number of seconds since
8684 the UNIX EPOCH (01 Jan 1970 00:00:00 UTC), which is used by
8685 multiple build systems to force a timestamp in built binaries.
8686 Many upstream projects already support this variable.
8687
8688 You will find more details in the `official specifications
8689 <https://reproducible-builds.org/specs/source-date-epoch/>`__.
8690
8691 A value for each recipe is computed from the sources by
8692 :oe_git:`meta/lib/oe/reproducible.py </openembedded-core/tree/meta/lib/oe/reproducible.py>`.
8693
8694 If a recipe wishes to override the default behavior, it should set its
8695 own :term:`SOURCE_DATE_EPOCH` value::
8696
8697 SOURCE_DATE_EPOCH = "1613559011"
6946 8698
6947 :term:`SOURCE_MIRROR_FETCH` 8699 :term:`SOURCE_MIRROR_FETCH`
6948 When you are fetching files to create a mirror of sources (i.e. 8700 When you are fetching files to create a mirror of sources (i.e.
6949 creating a source mirror), setting ``SOURCE_MIRROR_FETCH`` to "1" in 8701 creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in
6950 your ``local.conf`` configuration file ensures the source for all 8702 your ``local.conf`` configuration file ensures the source for all
6951 recipes are fetched regardless of whether or not a recipe is 8703 recipes are fetched regardless of whether or not a recipe is
6952 compatible with the configuration. A recipe is considered 8704 compatible with the configuration. A recipe is considered
@@ -6958,7 +8710,7 @@ system and gives an overview of their function and contents.
6958 8710
6959 .. note:: 8711 .. note::
6960 8712
6961 Do not set the ``SOURCE_MIRROR_FETCH`` 8713 Do not set the :term:`SOURCE_MIRROR_FETCH`
6962 variable unless you are creating a source mirror. In other words, 8714 variable unless you are creating a source mirror. In other words,
6963 do not set the variable during a normal build. 8715 do not set the variable during a normal build.
6964 8716
@@ -6968,20 +8720,190 @@ system and gives an overview of their function and contents.
6968 specified in :term:`SRC_URI`. 8720 specified in :term:`SRC_URI`.
6969 8721
6970 To use this variable, you must globally inherit the 8722 To use this variable, you must globally inherit the
6971 :ref:`own-mirrors <ref-classes-own-mirrors>` class and then provide 8723 :ref:`ref-classes-own-mirrors` class and then provide
6972 the URL to your mirrors. Here is the general syntax: 8724 the URL to your mirrors. Here is the general syntax::
6973 ::
6974 8725
6975 INHERIT += "own-mirrors" 8726 INHERIT += "own-mirrors"
6976 SOURCE_MIRROR_URL = "http://example.com/my_source_mirror" 8727 SOURCE_MIRROR_URL = "http://example.com/my_source_mirror"
6977 8728
6978 .. note:: 8729 .. note::
6979 8730
6980 You can specify only a single URL in ``SOURCE_MIRROR_URL``. 8731 You can specify only a single URL in :term:`SOURCE_MIRROR_URL`.
8732
8733 .. note::
8734
8735 If the mirror is protected behind a username and password, the
8736 :term:`build host` needs to be configured so the :term:`build system
8737 <OpenEmbedded Build System>` is able to fetch from the mirror.
8738
8739 The recommended way to do that is by setting the following parameters
8740 in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home
8741 directory)::
8742
8743 machine example.com
8744 login <user>
8745 password <password>
8746
8747 This file requires permissions set to ``400`` or ``600`` to prevent
8748 other users from reading the file::
8749
8750 chmod 600 "$HOME/.netrc"
8751
8752 Another method to configure the username and password is from the URL
8753 in :term:`SOURCE_MIRROR_URL` directly, with the ``user`` and ``pswd``
8754 parameters::
8755
8756 SOURCE_MIRROR_URL = "http://example.com/my_source_mirror;user=<user>;pswd=<password>"
8757
8758 :term:`SPDX_ARCHIVE_PACKAGED`
8759 This option allows to add to :term:`SPDX` output compressed archives
8760 of the files in the generated target packages.
8761
8762 Such archives are available in
8763 ``tmp/deploy/spdx/MACHINE/packages/packagename.tar.zst``
8764 under the :term:`Build Directory`.
8765
8766 Enable this option as follows::
8767
8768 SPDX_ARCHIVE_PACKAGED = "1"
8769
8770 According to our tests on release 4.1 "langdale", building
8771 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling this
8772 option multiplied the size of the ``tmp/deploy/spdx`` directory by a
8773 factor of 13 (+1.6 GiB for this image), compared to just using the
8774 :ref:`ref-classes-create-spdx` class with no option.
8775
8776 Note that this option doesn't increase the size of :term:`SPDX`
8777 files in ``tmp/deploy/images/MACHINE``.
8778
8779 :term:`SPDX_ARCHIVE_SOURCES`
8780 This option allows to add to :term:`SPDX` output compressed archives
8781 of the sources for packages installed on the target. It currently
8782 only works when :term:`SPDX_INCLUDE_SOURCES` is set.
8783
8784 This is one way of fulfilling "source code access" license
8785 requirements.
8786
8787 Such source archives are available in
8788 ``tmp/deploy/spdx/MACHINE/recipes/recipe-packagename.tar.zst``
8789 under the :term:`Build Directory`.
8790
8791 Enable this option as follows::
8792
8793 SPDX_INCLUDE_SOURCES = "1"
8794 SPDX_ARCHIVE_SOURCES = "1"
8795
8796 According to our tests on release 4.1 "langdale", building
8797 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
8798 these options multiplied the size of the ``tmp/deploy/spdx``
8799 directory by a factor of 11 (+1.4 GiB for this image),
8800 compared to just using the :ref:`ref-classes-create-spdx`
8801 class with no option.
8802
8803 Note that using this option only marginally increases the size
8804 of the :term:`SPDX` output in ``tmp/deploy/images/MACHINE/``
8805 (+ 0.07\% with the tested image), compared to just enabling
8806 :term:`SPDX_INCLUDE_SOURCES`.
8807
8808 :term:`SPDX_CUSTOM_ANNOTATION_VARS`
8809 This option allows to associate `SPDX annotations
8810 <https://spdx.github.io/spdx-spec/v2.3/annotations/>`__ to a recipe,
8811 using the values of variables in the recipe::
8812
8813 ANNOTATION1 = "First annotation for recipe"
8814 ANNOTATION2 = "Second annotation for recipe"
8815 SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2"
8816
8817 This will add a new block to the recipe ``.sdpx.json`` output::
8818
8819 "annotations": [
8820 {
8821 "annotationDate": "2023-04-18T08:32:12Z",
8822 "annotationType": "OTHER",
8823 "annotator": "Tool: oe-spdx-creator - 1.0",
8824 "comment": "ANNOTATION1=First annotation for recipe"
8825 },
8826 {
8827 "annotationDate": "2023-04-18T08:32:12Z",
8828 "annotationType": "OTHER",
8829 "annotator": "Tool: oe-spdx-creator - 1.0",
8830 "comment": "ANNOTATION2=Second annotation for recipe"
8831 }
8832 ],
8833
8834 :term:`SPDX_INCLUDE_COMPILED_SOURCES`
8835 This option allows the same as :term:`SPDX_INCLUDE_SOURCES` but including
8836 only the sources used to compile the host tools and the target packages.
8837 While :term:`SPDX_INCLUDE_SOURCES` includes all files in the source
8838 directory as source file descriptions, :term:`SPDX_INCLUDE_COMPILED_SOURCES`
8839 includes only the sources that are used to produce the binaries delivered
8840 as packages. The source files that are not used during compilation are not
8841 included in the SBOM. It uses debugsource information generated during
8842 ``do_package`` to filter out source files.
8843
8844 This enables an external tool to use the SPDX information to disregard
8845 vulnerabilities that are not compiled in the packages.
8846
8847 Enable this option as follows::
8848
8849 SPDX_INCLUDE_COMPILED_SOURCES = "1"
8850
8851 According to our tests, building ``core-image-minimal`` for the
8852 ``qemux86-64`` machine, enabling this option compared with the
8853 :term:`SPDX_INCLUDE_SOURCES` reduces the size of the ``tmp/deploy/spdx``
8854 directory from 2GB to 1.6GB.
8855
8856 :term:`SPDX_INCLUDE_SOURCES`
8857 This option allows to add a description of the source files used to build
8858 the host tools and the target packages, to the ``spdx.json`` files in
8859 ``tmp/deploy/spdx/MACHINE/recipes/`` under the :term:`Build Directory`.
8860 As a consequence, the ``spdx.json`` files under the ``by-namespace`` and
8861 ``packages`` subdirectories in ``tmp/deploy/spdx/MACHINE`` are also
8862 modified to include references to such source file descriptions.
8863
8864 Enable this option as follows::
8865
8866 SPDX_INCLUDE_SOURCES = "1"
8867
8868 According to our tests on release 4.1 "langdale", building
8869 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
8870 this option multiplied the total size of the ``tmp/deploy/spdx``
8871 directory by a factor of 3 (+291 MiB for this image),
8872 and the size of the ``IMAGE-MACHINE.spdx.tar.zst`` in
8873 ``tmp/deploy/images/MACHINE`` by a factor of 130 (+15 MiB for this
8874 image), compared to just using the :ref:`ref-classes-create-spdx` class
8875 with no option.
8876
8877 :term:`SPDX_NAMESPACE_PREFIX`
8878 This option could be used in order to change the prefix of ``spdxDocument``
8879 and the prefix of ``documentNamespace``. It is set by default to
8880 ``http://spdx.org/spdxdoc``.
8881
8882 :term:`SPDX_PACKAGE_URL`
8883 Provides a place for the SPDX data creator to record the package URL
8884 string (``software_packageUrl``, in accordance with the Package URL
8885 specification) for a software Package. The default value of this variable
8886 is an empty string.
8887
8888 :term:`SPDX_PACKAGE_VERSION`
8889 This variable controls the package version as seen in the SPDX 3.0 JSON
8890 output (``software_packageVersion``). The default value for this variable
8891 is :term:`PV`.
8892
8893 :term:`SPDX_PRETTY`
8894 This option makes the SPDX output more human-readable, using
8895 identation and newlines, instead of the default output in a
8896 single line::
8897
8898 SPDX_PRETTY = "1"
8899
8900 The generated SPDX files are approximately 20% bigger, but
8901 this option is recommended if you want to inspect the SPDX
8902 output files with a text editor.
6981 8903
6982 :term:`SPDXLICENSEMAP` 8904 :term:`SPDXLICENSEMAP`
6983 Maps commonly used license names to their SPDX counterparts found in 8905 Maps commonly used license names to their SPDX counterparts found in
6984 ``meta/files/common-licenses/``. For the default ``SPDXLICENSEMAP`` 8906 ``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP`
6985 mappings, see the ``meta/conf/licenses.conf`` file. 8907 mappings, see the ``meta/conf/licenses.conf`` file.
6986 8908
6987 For additional information, see the :term:`LICENSE` 8909 For additional information, see the :term:`LICENSE`
@@ -7001,8 +8923,7 @@ system and gives an overview of their function and contents.
7001 U-Boot recipe. 8923 U-Boot recipe.
7002 8924
7003 The SPL file type is set to "null" by default in the ``u-boot.inc`` 8925 The SPL file type is set to "null" by default in the ``u-boot.inc``
7004 file as follows: 8926 file as follows::
7005 ::
7006 8927
7007 # Some versions of u-boot build an SPL (Second Program Loader) image that 8928 # Some versions of u-boot build an SPL (Second Program Loader) image that
7008 # should be packaged along with the u-boot binary as well as placed in the 8929 # should be packaged along with the u-boot binary as well as placed in the
@@ -7013,171 +8934,134 @@ system and gives an overview of their function and contents.
7013 SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}" 8934 SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
7014 SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}" 8935 SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
7015 8936
7016 The ``SPL_BINARY`` variable helps form 8937 The :term:`SPL_BINARY` variable helps form
7017 various ``SPL_*`` variables used by the OpenEmbedded build system. 8938 various ``SPL_*`` variables used by the OpenEmbedded build system.
7018 8939
7019 See the BeagleBone machine configuration example in the 8940 See the BeagleBone machine configuration example in the
7020 ":ref:`dev-manual/common-tasks:adding a layer using the \`\`bitbake-layers\`\` script`" 8941 ":ref:`dev-manual/layers:adding a layer using the \`\`bitbake-layers\`\` script`"
7021 section in the Yocto Project Board Support Package Developer's Guide 8942 section in the Yocto Project Board Support Package Developer's Guide
7022 for additional information. 8943 for additional information.
7023 8944
7024 :term:`SRC_URI` 8945 :term:`SPL_DTB_BINARY`
7025 The list of source files - local or remote. This variable tells the 8946 When inheriting the :ref:`ref-classes-uboot-sign` class, the
7026 OpenEmbedded build system which bits to pull in for the build and how 8947 :term:`SPL_DTB_BINARY` variable contains the name of the SPL binary to be
7027 to pull them in. For example, if the recipe or append file only needs 8948 compiled.
7028 to fetch a tarball from the Internet, the recipe or append file uses
7029 a single ``SRC_URI`` entry. On the other hand, if the recipe or
7030 append file needs to fetch a tarball, apply two patches, and include
7031 a custom file, the recipe or append file would include four instances
7032 of the variable.
7033
7034 The following list explains the available URI protocols. URI
7035 protocols are highly dependent on particular BitBake Fetcher
7036 submodules. Depending on the fetcher BitBake uses, various URL
7037 parameters are employed. For specifics on the supported Fetchers, see
7038 the ":ref:`Fetchers <bitbake:bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`" section in the
7039 BitBake User Manual.
7040
7041 - ``file://`` - Fetches files, which are usually files shipped
7042 with the :term:`Metadata`, from the local machine (e.g.
7043 :ref:`patch <overview-manual/concepts:patching>` files).
7044 The path is relative to the :term:`FILESPATH`
7045 variable. Thus, the build system searches, in order, from the
7046 following directories, which are assumed to be a subdirectories of
7047 the directory in which the recipe file (``.bb``) or append file
7048 (``.bbappend``) resides:
7049
7050 - ``${BPN}`` - The base recipe name without any special suffix
7051 or version numbers.
7052
7053 - ``${BP}`` - ``${BPN}-${PV}``. The base recipe name and
7054 version but without any special package name suffix.
7055
7056 - *files -* Files within a directory, which is named ``files``
7057 and is also alongside the recipe or append file.
7058 8949
7059 .. note:: 8950 :term:`SPL_MKIMAGE_DTCOPTS`
8951 Options for the device tree compiler passed to ``mkimage -D`` feature
8952 while creating a FIT image with the :ref:`ref-classes-uboot-sign`
8953 class. If :term:`SPL_MKIMAGE_DTCOPTS` is not set then the
8954 :ref:`ref-classes-uboot-sign` class will not pass the ``-D`` option
8955 to ``mkimage``.
8956
8957 The default value is set to "" by the :ref:`ref-classes-uboot-config`
8958 class.
7060 8959
7061 If you want the build system to pick up files specified through 8960 :term:`SPL_SIGN_ENABLE`
7062 a 8961 Enable signing of the U-Boot FIT image. The default value is "0".
7063 SRC_URI 8962 This variable is used by the :ref:`ref-classes-uboot-sign` class.
7064 statement from your append file, you need to be sure to extend
7065 the
7066 FILESPATH
7067 variable by also using the
7068 FILESEXTRAPATHS
7069 variable from within your append file.
7070 8963
7071 - ``bzr://`` - Fetches files from a Bazaar revision control 8964 :term:`SPL_SIGN_KEYDIR`
7072 repository. 8965 Location of the directory containing the RSA key and certificate used for
8966 signing the U-Boot FIT image, used by the :ref:`ref-classes-uboot-sign`
8967 class.
7073 8968
7074 - ``git://`` - Fetches files from a Git revision control 8969 :term:`SPL_SIGN_KEYNAME`
7075 repository. 8970 The name of keys used by the :ref:`ref-classes-uboot-sign` class
8971 for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR`
8972 directory. If we have for example a ``dev.key`` key and a ``dev.crt``
8973 certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will
8974 have to set :term:`SPL_SIGN_KEYNAME` to ``dev``.
7076 8975
7077 - ``osc://`` - Fetches files from an OSC (OpenSUSE Build service) 8976 :term:`SPLASH`
7078 revision control repository. 8977 This variable, used by the :ref:`ref-classes-image` class, allows
8978 to choose splashscreen applications. Set it to the names of packages
8979 for such applications to use. This variable is set by default to
8980 ``psplash``.
7079 8981
7080 - ``repo://`` - Fetches files from a repo (Git) repository. 8982 :term:`SPLASH_IMAGES`
8983 This variable, used by the ``psplash`` recipe, allows to customize
8984 the default splashscreen image.
7081 8985
7082 - ``ccrc://`` - Fetches files from a ClearCase repository. 8986 Specified images in PNG format are converted to ``.h`` files by the recipe,
8987 and are included in the ``psplash`` binary, so you won't find them in
8988 the root filesystem.
7083 8989
7084 - ``http://`` - Fetches files from the Internet using ``http``. 8990 To make such a change, it is recommended to customize the
8991 ``psplash`` recipe in a custom layer. Here is an example structure for
8992 an ``ACME`` board::
7085 8993
7086 - ``https://`` - Fetches files from the Internet using ``https``. 8994 meta-acme/recipes-core/psplash
8995 ├── files
8996 │   └── logo-acme.png
8997 └── psplash_%.bbappend
7087 8998
7088 - ``ftp://`` - Fetches files from the Internet using ``ftp``. 8999 And here are the contents of the ``psplash_%.bbappend`` file in
9000 this example::
7089 9001
7090 - ``cvs://`` - Fetches files from a CVS revision control 9002 SPLASH_IMAGES = "file://logo-acme.png;outsuffix=default"
7091 repository. 9003 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
7092 9004
7093 - ``hg://`` - Fetches files from a Mercurial (``hg``) revision 9005 You could even add specific configuration options for ``psplash``,
7094 control repository. 9006 for example::
7095 9007
7096 - ``p4://`` - Fetches files from a Perforce (``p4``) revision 9008 EXTRA_OECONF += "--disable-startup-msg --enable-img-fullscreen"
7097 control repository.
7098 9009
7099 - ``ssh://`` - Fetches files from a secure shell. 9010 For information on append files, see the
9011 ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
9012 section.
9013
9014 :term:`SRC_URI`
7100 9015
7101 - ``svn://`` - Fetches files from a Subversion (``svn``) revision 9016 See the BitBake manual for the initial description for this variable:
7102 control repository. 9017 :term:`bitbake:SRC_URI`.
7103 9018
7104 - ``npm://`` - Fetches JavaScript modules from a registry. 9019 The following features are added by OpenEmbedded and the Yocto Project.
7105 9020
7106 Standard and recipe-specific options for ``SRC_URI`` exist. Here are 9021 There are standard and recipe-specific options. Here are standard ones:
7107 standard options:
7108 9022
7109 - ``apply`` - Whether to apply the patch or not. The default 9023 - ``apply`` --- whether to apply the patch or not. The default
7110 action is to apply the patch. 9024 action is to apply the patch.
7111 9025
7112 - ``striplevel`` - Which striplevel to use when applying the 9026 - ``striplevel`` --- which striplevel to use when applying the
7113 patch. The default level is 1. 9027 patch. The default level is 1.
7114 9028
7115 - ``patchdir`` - Specifies the directory in which the patch should 9029 - ``patchdir`` --- specifies the directory in which the patch should
7116 be applied. The default is ``${``\ :term:`S`\ ``}``. 9030 be applied. The default is ``${``\ :term:`S`\ ``}``.
7117 9031
7118 Here are options specific to recipes building code from a revision 9032 Here are options specific to recipes building code from a revision
7119 control system: 9033 control system:
7120 9034
7121 - ``mindate`` - Apply the patch only if 9035 - ``mindate`` --- apply the patch only if
7122 :term:`SRCDATE` is equal to or greater than 9036 :term:`SRCDATE` is equal to or greater than
7123 ``mindate``. 9037 ``mindate``.
7124 9038
7125 - ``maxdate`` - Apply the patch only if ``SRCDATE`` is not later 9039 - ``maxdate`` --- apply the patch only if :term:`SRCDATE` is not later
7126 than ``maxdate``. 9040 than ``maxdate``.
7127 9041
7128 - ``minrev`` - Apply the patch only if ``SRCREV`` is equal to or 9042 - ``minrev`` --- apply the patch only if :term:`SRCREV` is equal to or
7129 greater than ``minrev``. 9043 greater than ``minrev``.
7130 9044
7131 - ``maxrev`` - Apply the patch only if ``SRCREV`` is not later 9045 - ``maxrev`` --- apply the patch only if :term:`SRCREV` is not later
7132 than ``maxrev``. 9046 than ``maxrev``.
7133 9047
7134 - ``rev`` - Apply the patch only if ``SRCREV`` is equal to 9048 - ``rev`` --- apply the patch only if :term:`SRCREV` is equal to
7135 ``rev``. 9049 ``rev``.
7136 9050
7137 - ``notrev`` - Apply the patch only if ``SRCREV`` is not equal to 9051 - ``notrev`` --- apply the patch only if :term:`SRCREV` is not equal to
7138 ``rev``. 9052 ``rev``.
7139 9053
7140 Here are some additional options worth mentioning: 9054 .. note::
7141
7142 - ``unpack`` - Controls whether or not to unpack the file if it is
7143 an archive. The default action is to unpack the file.
7144
7145 - ``destsuffix`` - Places the file (or extracts its contents) into
7146 the specified subdirectory of :term:`WORKDIR` when
7147 the Git fetcher is used.
7148
7149 - ``subdir`` - Places the file (or extracts its contents) into the
7150 specified subdirectory of ``WORKDIR`` when the local (``file://``)
7151 fetcher is used.
7152
7153 - ``localdir`` - Places the file (or extracts its contents) into
7154 the specified subdirectory of ``WORKDIR`` when the CVS fetcher is
7155 used.
7156
7157 - ``subpath`` - Limits the checkout to a specific subpath of the
7158 tree when using the Git fetcher is used.
7159
7160 - ``name`` - Specifies a name to be used for association with
7161 ``SRC_URI`` checksums or :term:`SRCREV` when you have more than one
7162 file or git repository specified in ``SRC_URI``. For example:
7163 ::
7164
7165 SRC_URI = "git://example.com/foo.git;name=first \
7166 git://example.com/bar.git;name=second \
7167 http://example.com/file.tar.gz;name=third"
7168
7169 SRCREV_first = "f1d2d2f924e986ac86fdf7b36c94bcdf32beec15"
7170 SRCREV_second = "e242ed3bffccdf271b7fbaf34ed72d089537b42f"
7171 SRC_URI[third.sha256sum] = "13550350a8681c84c861aac2e5b440161c2b33a3e4f302ac680ca5b686de48de"
7172
7173 9055
7174 - ``downloadfilename`` - Specifies the filename used when storing 9056 If you want the build system to pick up files specified through
7175 the downloaded file. 9057 a :term:`SRC_URI` statement from your append file, you need to be
9058 sure to extend the :term:`FILESPATH` variable by also using the
9059 :term:`FILESEXTRAPATHS` variable from within your append file.
7176 9060
7177 :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` 9061 :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH`
7178 By default, the OpenEmbedded build system automatically detects 9062 By default, the OpenEmbedded build system automatically detects
7179 whether ``SRC_URI`` contains files that are machine-specific. If so, 9063 whether :term:`SRC_URI` contains files that are machine-specific. If so,
7180 the build system automatically changes ``PACKAGE_ARCH``. Setting this 9064 the build system automatically changes :term:`PACKAGE_ARCH`. Setting this
7181 variable to "0" disables this behavior. 9065 variable to "0" disables this behavior.
7182 9066
7183 :term:`SRCDATE` 9067 :term:`SRCDATE`
@@ -7186,49 +9070,102 @@ system and gives an overview of their function and contents.
7186 (SCM). 9070 (SCM).
7187 9071
7188 :term:`SRCPV` 9072 :term:`SRCPV`
7189 Returns the version string of the current package. This string is 9073 The variable :term:`SRCPV` is deprecated. It was previously used to
7190 used to help define the value of :term:`PV`. 9074 include source control information in :term:`PV` for :term:`bitbake` to
9075 work correctly but this is no longer a requirement. Source control
9076 information will be automatically included by :term:`bitbake` in the
9077 variable :term:`PKGV` during packaging if the ``+`` sign is present in
9078 :term:`PV`.
7191 9079
7192 The ``SRCPV`` variable is defined in the ``meta/conf/bitbake.conf`` 9080 .. note::
7193 configuration file in the :term:`Source Directory` as
7194 follows:
7195 ::
7196 9081
7197 SRCPV = "${@bb.fetch2.get_srcrev(d)}" 9082 The :term:`SRCPV` variable used to be defined in the
9083 ``meta/conf/bitbake.conf`` configuration file in the :term:`Source
9084 Directory` as follows::
7198 9085
7199 Recipes that need to define ``PV`` do so with the help of the 9086 SRCPV = "${@bb.fetch2.get_srcrev(d)}"
7200 ``SRCPV``. For example, the ``ofono`` recipe (``ofono_git.bb``)
7201 located in ``meta/recipes-connectivity`` in the Source Directory
7202 defines ``PV`` as follows:
7203 ::
7204 9087
7205 PV = "0.12-git${SRCPV}" 9088 The ``get_srcrev`` function can still be used to include source control
9089 information in variables manually.
7206 9090
7207 :term:`SRCREV` 9091 :term:`SRCREV`
7208 The revision of the source code used to build the package. This 9092 The revision of the source code used to build the package. This
7209 variable applies to Subversion, Git, Mercurial, and Bazaar only. Note 9093 variable applies to Subversion, Git, Mercurial, and Bazaar only. Note
7210 that if you want to build a fixed revision and you want to avoid 9094 that if you want to build a fixed revision and you want to avoid
7211 performing a query on the remote repository every time BitBake parses 9095 performing a query on the remote repository every time BitBake parses
7212 your recipe, you should specify a ``SRCREV`` that is a full revision 9096 your recipe, you should specify a :term:`SRCREV` that is a full revision
7213 identifier and not just a tag. 9097 identifier (e.g. the full SHA hash in git) and not just a tag.
7214 9098
7215 .. note:: 9099 .. note::
7216 9100
7217 For information on limitations when inheriting the latest revision 9101 For information on limitations when inheriting the latest revision
7218 of software using ``SRCREV``, see the :term:`AUTOREV` variable 9102 of software using :term:`SRCREV`, see the :term:`AUTOREV` variable
7219 description and the 9103 description and the
7220 ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`" 9104 ":ref:`dev-manual/packages:automatically incrementing a package version number`"
7221 section, which is in the Yocto Project Development Tasks Manual. 9105 section, which is in the Yocto Project Development Tasks Manual.
7222 9106
9107 :term:`SRCREV_FORMAT`
9108 See :term:`bitbake:SRCREV_FORMAT` in the BitBake manual.
9109
9110 :term:`SRCTREECOVEREDTASKS`
9111 A list of tasks that are typically not relevant (and therefore skipped)
9112 when building using the :ref:`ref-classes-externalsrc`
9113 class. The default value as set in that class file is the set of tasks
9114 that are rarely needed when using external source::
9115
9116 SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch"
9117
9118 The notable exception is when processing external kernel source as
9119 defined in the :ref:`ref-classes-kernel-yocto` class file (formatted for
9120 aesthetics)::
9121
9122 SRCTREECOVEREDTASKS += "\
9123 do_validate_branches \
9124 do_kernel_configcheck \
9125 do_kernel_checkout \
9126 do_fetch \
9127 do_unpack \
9128 do_patch \
9129 "
9130
9131 See the associated :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD`
9132 variables for more information.
9133
7223 :term:`SSTATE_DIR` 9134 :term:`SSTATE_DIR`
7224 The directory for the shared state cache. 9135 The directory for the shared state cache.
7225 9136
9137 :term:`SSTATE_EXCLUDEDEPS_SYSROOT`
9138 This variable allows to specify indirect dependencies to exclude
9139 from sysroots, for example to avoid the situations when a dependency on
9140 any ``-native`` recipe will pull in all dependencies of that recipe
9141 in the recipe sysroot. This behaviour might not always be wanted,
9142 for example when that ``-native`` recipe depends on build tools
9143 that are not relevant for the current recipe.
9144
9145 This way, irrelevant dependencies are ignored, which could have
9146 prevented the reuse of prebuilt artifacts stored in the Shared
9147 State Cache.
9148
9149 :term:`SSTATE_EXCLUDEDEPS_SYSROOT` is evaluated as two regular
9150 expressions of recipe and dependency to ignore. An example
9151 is the rule in :oe_git:`meta/conf/layer.conf </openembedded-core/tree/meta/conf/layer.conf>`::
9152
9153 # Nothing needs to depend on libc-initial
9154 # base-passwd/shadow-sysroot don't need their dependencies
9155 SSTATE_EXCLUDEDEPS_SYSROOT += "\
9156 .*->.*-initial.* \
9157 .*(base-passwd|shadow-sysroot)->.* \
9158 "
9159
9160 The ``->`` substring represents the dependency between
9161 the two regular expressions.
9162
7226 :term:`SSTATE_MIRROR_ALLOW_NETWORK` 9163 :term:`SSTATE_MIRROR_ALLOW_NETWORK`
7227 If set to "1", allows fetches from mirrors that are specified in 9164 If set to "1", allows fetches from mirrors that are specified in
7228 :term:`SSTATE_MIRRORS` to work even when 9165 :term:`SSTATE_MIRRORS` to work even when
7229 fetching from the network is disabled by setting ``BB_NO_NETWORK`` to 9166 fetching from the network is disabled by setting :term:`BB_NO_NETWORK` to
7230 "1". Using the ``SSTATE_MIRROR_ALLOW_NETWORK`` variable is useful if 9167 "1". Using the :term:`SSTATE_MIRROR_ALLOW_NETWORK` variable is useful if
7231 you have set ``SSTATE_MIRRORS`` to point to an internal server for 9168 you have set :term:`SSTATE_MIRRORS` to point to an internal server for
7232 your shared state cache, but you want to disable any other fetching 9169 your shared state cache, but you want to disable any other fetching
7233 from the network. 9170 from the network.
7234 9171
@@ -7246,26 +9183,61 @@ system and gives an overview of their function and contents.
7246 9183
7247 When pointing to sstate build artifacts on another machine that uses 9184 When pointing to sstate build artifacts on another machine that uses
7248 a different GCC version for native builds, you must configure 9185 a different GCC version for native builds, you must configure
7249 ``SSTATE_MIRRORS`` with a regular expression that maps local search 9186 :term:`SSTATE_MIRRORS` with a regular expression that maps local search
7250 paths to server paths. The paths need to take into account 9187 paths to server paths. The paths need to take into account
7251 :term:`NATIVELSBSTRING` set by the 9188 :term:`NATIVELSBSTRING` set by the :ref:`ref-classes-uninative` class.
7252 :ref:`uninative <ref-classes-uninative>` class. For example, the 9189 For example, the following maps the local search path ``universal-4.9``
7253 following maps the local search path ``universal-4.9`` to the 9190 to the server-provided path server_url_sstate_path::
7254 server-provided path server_url_sstate_path:
7255 ::
7256 9191
7257 SSTATE_MIRRORS ?= "file://universal-4.9/(.*) http://server_url_sstate_path/universal-4.8/\1 \n" 9192 SSTATE_MIRRORS ?= "file://universal-4.9/(.*) https://server_url_sstate_path/universal-4.8/\1"
7258 9193
7259 If a mirror uses the same structure as 9194 If a mirror uses the same structure as
7260 :term:`SSTATE_DIR`, you need to add "PATH" at the 9195 :term:`SSTATE_DIR`, you need to add "PATH" at the
7261 end as shown in the examples below. The build system substitutes the 9196 end as shown in the examples below. The build system substitutes the
7262 correct path within the directory structure. 9197 correct path within the directory structure::
7263 ::
7264 9198
7265 SSTATE_MIRRORS ?= "\ 9199 SSTATE_MIRRORS ?= "\
7266 file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ 9200 file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
7267 file://.* file:///some-local-dir/sstate/PATH" 9201 file://.* file:///some-local-dir/sstate/PATH"
7268 9202
9203 .. note::
9204
9205 If the mirror is protected behind a username and password, the
9206 :term:`build host` needs to be configured so the :term:`build system
9207 <OpenEmbedded Build System>` is able to download the sstate cache using
9208 authentication.
9209
9210 The recommended way to do that is by setting the following parameters
9211 in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home
9212 directory)::
9213
9214 machine someserver.tld
9215 login <user>
9216 password <password>
9217
9218 This file requires permissions set to ``400`` or ``600`` to prevent
9219 other users from reading the file::
9220
9221 chmod 600 "$HOME/.netrc"
9222
9223 Another method to configure the username and password is from the
9224 URL in :term:`SSTATE_MIRRORS` directly, with the ``user`` and ``pswd``
9225 parameters::
9226
9227 SSTATE_MIRRORS ?= "\
9228 file://.* https://someserver.tld/share/sstate/PATH;user=<user>;pswd=<password>;downloadfilename=PATH \
9229 "
9230
9231 The Yocto Project actually shares the cache data objects built by its
9232 autobuilder::
9233
9234 SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
9235
9236 As such binary artifacts are built for the generic QEMU machines
9237 supported by the various Poky releases, they are less likely to be
9238 reusable in real projects building binaries optimized for a specific
9239 CPU family.
9240
7269 :term:`SSTATE_SCAN_FILES` 9241 :term:`SSTATE_SCAN_FILES`
7270 Controls the list of files the OpenEmbedded build system scans for 9242 Controls the list of files the OpenEmbedded build system scans for
7271 hardcoded installation paths. The variable uses a space-separated 9243 hardcoded installation paths. The variable uses a space-separated
@@ -7276,14 +9248,32 @@ system and gives an overview of their function and contents.
7276 (sstate) object during the first stage of preparing the sysroots. 9248 (sstate) object during the first stage of preparing the sysroots.
7277 That object is scanned for hardcoded paths for original installation 9249 That object is scanned for hardcoded paths for original installation
7278 locations. The list of files that are scanned for paths is controlled 9250 locations. The list of files that are scanned for paths is controlled
7279 by the ``SSTATE_SCAN_FILES`` variable. Typically, recipes add files 9251 by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files
7280 they want to be scanned to the value of ``SSTATE_SCAN_FILES`` rather 9252 they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather
7281 than the variable being comprehensively set. The 9253 than the variable being comprehensively set. The
7282 :ref:`sstate <ref-classes-sstate>` class specifies the default list 9254 :ref:`ref-classes-sstate` class specifies the default list of files.
7283 of files. 9255
9256 For details on the process, see the :ref:`ref-classes-staging` class.
9257
9258 :term:`SSTATE_SKIP_CREATION`
9259 The :term:`SSTATE_SKIP_CREATION` variable can be used to skip the
9260 creation of :ref:`shared state <overview-manual/concepts:shared state cache>`
9261 tarball files. It makes sense e.g. for image creation tasks as tarring images
9262 and keeping them in sstate would consume a lot of disk space.
9263
9264 In general it is not recommended to use this variable as missing sstate
9265 artefacts adversely impact the build, particularly for entries in the
9266 middle of dependency chains. The case it can make sense is where the
9267 size and time costs of the artefact are similar to just running the
9268 tasks. This generally only applies to end artefact output like images.
9269
9270 The syntax to disable it for one task is::
9271
9272 SSTATE_SKIP_CREATION:task-image-complete = "1"
7284 9273
7285 For details on the process, see the 9274 The syntax to disable it for the whole recipe is::
7286 :ref:`staging <ref-classes-staging>` class. 9275
9276 SSTATE_SKIP_CREATION = "1"
7287 9277
7288 :term:`STAGING_BASE_LIBDIR_NATIVE` 9278 :term:`STAGING_BASE_LIBDIR_NATIVE`
7289 Specifies the path to the ``/lib`` subdirectory of the sysroot 9279 Specifies the path to the ``/lib`` subdirectory of the sysroot
@@ -7326,12 +9316,12 @@ system and gives an overview of their function and contents.
7326 directory for the build host. 9316 directory for the build host.
7327 9317
7328 :term:`STAGING_DIR` 9318 :term:`STAGING_DIR`
7329 Helps construct the ``recipe-sysroots`` directory, which is used 9319 Helps construct the ``recipe-sysroot*`` directories, which are used
7330 during packaging. 9320 during packaging.
7331 9321
7332 For information on how staging for recipe-specific sysroots occurs, 9322 For information on how staging for recipe-specific sysroots occurs,
7333 see the :ref:`ref-tasks-populate_sysroot` 9323 see the :ref:`ref-tasks-populate_sysroot`
7334 task, the ":ref:`sdk-manual/extensible:sharing files between recipes`" 9324 task, the ":ref:`dev-manual/devtool:sharing files between recipes`"
7335 section in the Yocto Project Development Tasks Manual, the 9325 section in the Yocto Project Development Tasks Manual, the
7336 ":ref:`overview-manual/concepts:configuration, compilation, and staging`" 9326 ":ref:`overview-manual/concepts:configuration, compilation, and staging`"
7337 section in the Yocto Project Overview and Concepts Manual, and the 9327 section in the Yocto Project Overview and Concepts Manual, and the
@@ -7339,7 +9329,7 @@ system and gives an overview of their function and contents.
7339 9329
7340 .. note:: 9330 .. note::
7341 9331
7342 Recipes should never write files directly under the ``STAGING_DIR`` 9332 Recipes should never write files directly under the :term:`STAGING_DIR`
7343 directory because the OpenEmbedded build system manages the 9333 directory because the OpenEmbedded build system manages the
7344 directory automatically. Instead, files should be installed to 9334 directory automatically. Instead, files should be installed to
7345 ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install` 9335 ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install`
@@ -7352,9 +9342,9 @@ system and gives an overview of their function and contents.
7352 For most recipes, this sysroot is the one in which that recipe's 9342 For most recipes, this sysroot is the one in which that recipe's
7353 :ref:`ref-tasks-populate_sysroot` task copies 9343 :ref:`ref-tasks-populate_sysroot` task copies
7354 files. Exceptions include ``-native`` recipes, where the 9344 files. Exceptions include ``-native`` recipes, where the
7355 ``do_populate_sysroot`` task instead uses 9345 :ref:`ref-tasks-populate_sysroot` task instead uses
7356 :term:`STAGING_DIR_NATIVE`. Depending on 9346 :term:`STAGING_DIR_NATIVE`. Depending on
7357 the type of recipe and the build target, ``STAGING_DIR_HOST`` can 9347 the type of recipe and the build target, :term:`STAGING_DIR_HOST` can
7358 have the following values: 9348 have the following values:
7359 9349
7360 - For recipes building for the target machine, the value is 9350 - For recipes building for the target machine, the value is
@@ -7368,11 +9358,11 @@ system and gives an overview of their function and contents.
7368 9358
7369 ``-native`` recipes are not installed into host paths like such 9359 ``-native`` recipes are not installed into host paths like such
7370 as ``/usr``. Rather, these recipes are installed into 9360 as ``/usr``. Rather, these recipes are installed into
7371 ``STAGING_DIR_NATIVE``. When compiling ``-native`` recipes, 9361 :term:`STAGING_DIR_NATIVE`. When compiling ``-native`` recipes,
7372 standard build environment variables such as 9362 standard build environment variables such as
7373 :term:`CPPFLAGS` and 9363 :term:`CPPFLAGS` and
7374 :term:`CFLAGS` are set up so that both host paths 9364 :term:`CFLAGS` are set up so that both host paths
7375 and ``STAGING_DIR_NATIVE`` are searched for libraries and 9365 and :term:`STAGING_DIR_NATIVE` are searched for libraries and
7376 headers using, for example, GCC's ``-isystem`` option. 9366 headers using, for example, GCC's ``-isystem`` option.
7377 9367
7378 Thus, the emphasis is that the ``STAGING_DIR*`` variables 9368 Thus, the emphasis is that the ``STAGING_DIR*`` variables
@@ -7380,28 +9370,33 @@ system and gives an overview of their function and contents.
7380 :ref:`ref-tasks-configure`, 9370 :ref:`ref-tasks-configure`,
7381 :ref:`ref-tasks-compile`, and 9371 :ref:`ref-tasks-compile`, and
7382 :ref:`ref-tasks-install`. Having the real system 9372 :ref:`ref-tasks-install`. Having the real system
7383 root correspond to ``STAGING_DIR_HOST`` makes conceptual sense 9373 root correspond to :term:`STAGING_DIR_HOST` makes conceptual sense
7384 for ``-native`` recipes, as they make use of host headers and 9374 for ``-native`` recipes, as they make use of host headers and
7385 libraries. 9375 libraries.
7386 9376
9377 Check :term:`RECIPE_SYSROOT` and :term:`RECIPE_SYSROOT_NATIVE`.
9378
7387 :term:`STAGING_DIR_NATIVE` 9379 :term:`STAGING_DIR_NATIVE`
7388 Specifies the path to the sysroot directory used when building 9380 Specifies the path to the sysroot directory used when building
7389 components that run on the build host itself. 9381 components that run on the build host itself.
7390 9382
9383 The default value is ``"${RECIPE_SYSROOT_NATIVE}"``,
9384 check :term:`RECIPE_SYSROOT_NATIVE`.
9385
7391 :term:`STAGING_DIR_TARGET` 9386 :term:`STAGING_DIR_TARGET`
7392 Specifies the path to the sysroot used for the system for which the 9387 Specifies the path to the sysroot used for the system for which the
7393 component generates code. For components that do not generate code, 9388 component generates code. For components that do not generate code,
7394 which is the majority, ``STAGING_DIR_TARGET`` is set to match 9389 which is the majority, :term:`STAGING_DIR_TARGET` is set to match
7395 :term:`STAGING_DIR_HOST`. 9390 :term:`STAGING_DIR_HOST`.
7396 9391
7397 Some recipes build binaries that can run on the target system but 9392 Some recipes build binaries that can run on the target system but those
7398 those binaries in turn generate code for another different system 9393 binaries in turn generate code for another different system (e.g.
7399 (e.g. cross-canadian recipes). Using terminology from GNU, the 9394 :ref:`ref-classes-cross-canadian` recipes). Using terminology from GNU,
7400 primary system is referred to as the "HOST" and the secondary, or 9395 the primary system is referred to as the "HOST" and the secondary, or
7401 different, system is referred to as the "TARGET". Thus, the binaries 9396 different, system is referred to as the "TARGET". Thus, the binaries
7402 run on the "HOST" system and generate binaries for the "TARGET" 9397 run on the "HOST" system and generate binaries for the "TARGET"
7403 system. The ``STAGING_DIR_HOST`` variable points to the sysroot used 9398 system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used
7404 for the "HOST" system, while ``STAGING_DIR_TARGET`` points to the 9399 for the "HOST" system, while :term:`STAGING_DIR_TARGET` points to the
7405 sysroot used for the "TARGET" system. 9400 sysroot used for the "TARGET" system.
7406 9401
7407 :term:`STAGING_ETCDIR_NATIVE` 9402 :term:`STAGING_ETCDIR_NATIVE`
@@ -7426,7 +9421,7 @@ system and gives an overview of their function and contents.
7426 Points to the directory containing the kernel build artifacts. 9421 Points to the directory containing the kernel build artifacts.
7427 Recipes building software that needs to access kernel build artifacts 9422 Recipes building software that needs to access kernel build artifacts
7428 (e.g. ``systemtap-uprobes``) can look in the directory specified with 9423 (e.g. ``systemtap-uprobes``) can look in the directory specified with
7429 the ``STAGING_KERNEL_BUILDDIR`` variable to find these artifacts 9424 the :term:`STAGING_KERNEL_BUILDDIR` variable to find these artifacts
7430 after the kernel has been built. 9425 after the kernel has been built.
7431 9426
7432 :term:`STAGING_KERNEL_DIR` 9427 :term:`STAGING_KERNEL_DIR`
@@ -7446,9 +9441,8 @@ system and gives an overview of their function and contents.
7446 Specifies the base path used to create recipe stamp files. The path 9441 Specifies the base path used to create recipe stamp files. The path
7447 to an actual stamp file is constructed by evaluating this string and 9442 to an actual stamp file is constructed by evaluating this string and
7448 then appending additional information. Currently, the default 9443 then appending additional information. Currently, the default
7449 assignment for ``STAMP`` as set in the ``meta/conf/bitbake.conf`` 9444 assignment for :term:`STAMP` as set in the ``meta/conf/bitbake.conf``
7450 file is: 9445 file is::
7451 ::
7452 9446
7453 STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}" 9447 STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
7454 9448
@@ -7463,19 +9457,22 @@ system and gives an overview of their function and contents.
7463 :term:`PV`, and :term:`PR` for related variable 9457 :term:`PV`, and :term:`PR` for related variable
7464 information. 9458 information.
7465 9459
9460 :term:`STAMPCLEAN`
9461 See :term:`bitbake:STAMPCLEAN` in the BitBake manual.
9462
7466 :term:`STAMPS_DIR` 9463 :term:`STAMPS_DIR`
7467 Specifies the base directory in which the OpenEmbedded build system 9464 Specifies the base directory in which the OpenEmbedded build system
7468 places stamps. The default directory is ``${TMPDIR}/stamps``. 9465 places stamps. The default directory is ``${TMPDIR}/stamps``.
7469 9466
7470 :term:`STRIP` 9467 :term:`STRIP`
7471 The minimal command and arguments to run ``strip``, which is used to 9468 The minimal command and arguments to run :manpage:`strip <strip(1)>`,
7472 strip symbols. 9469 which is used to strip symbols.
7473 9470
7474 :term:`SUMMARY` 9471 :term:`SUMMARY`
7475 The short (72 characters or less) summary of the binary package for 9472 The short (72 characters or less) summary of the binary package for
7476 packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default, 9473 packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default,
7477 ``SUMMARY`` is used to define the 9474 :term:`SUMMARY` is used to define the
7478 :term:`DESCRIPTION` variable if ``DESCRIPTION`` is 9475 :term:`DESCRIPTION` variable if :term:`DESCRIPTION` is
7479 not set in the recipe. 9476 not set in the recipe.
7480 9477
7481 :term:`SVNDIR` 9478 :term:`SVNDIR`
@@ -7485,12 +9482,11 @@ system and gives an overview of their function and contents.
7485 :term:`SYSLINUX_DEFAULT_CONSOLE` 9482 :term:`SYSLINUX_DEFAULT_CONSOLE`
7486 Specifies the kernel boot default console. If you want to use a 9483 Specifies the kernel boot default console. If you want to use a
7487 console other than the default, set this variable in your recipe as 9484 console other than the default, set this variable in your recipe as
7488 follows where "X" is the console number you want to use: 9485 follows where "X" is the console number you want to use::
7489 ::
7490 9486
7491 SYSLINUX_DEFAULT_CONSOLE = "console=ttyX" 9487 SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
7492 9488
7493 The :ref:`syslinux <ref-classes-syslinux>` class initially sets 9489 The :ref:`ref-classes-syslinux` class initially sets
7494 this variable to null but then checks for a value later. 9490 this variable to null but then checks for a value later.
7495 9491
7496 :term:`SYSLINUX_OPTS` 9492 :term:`SYSLINUX_OPTS`
@@ -7498,15 +9494,14 @@ system and gives an overview of their function and contents.
7498 this variable in your recipe. If you want to list multiple options, 9494 this variable in your recipe. If you want to list multiple options,
7499 separate the options with a semicolon character (``;``). 9495 separate the options with a semicolon character (``;``).
7500 9496
7501 The :ref:`syslinux <ref-classes-syslinux>` class uses this variable 9497 The :ref:`ref-classes-syslinux` class uses this variable
7502 to create a set of options. 9498 to create a set of options.
7503 9499
7504 :term:`SYSLINUX_SERIAL` 9500 :term:`SYSLINUX_SERIAL`
7505 Specifies the alternate serial port or turns it off. To turn off 9501 Specifies the alternate serial port or turns it off. To turn off
7506 serial, set this variable to an empty string in your recipe. The 9502 serial, set this variable to an empty string in your recipe. The
7507 variable's default value is set in the 9503 variable's default value is set in the
7508 :ref:`syslinux <ref-classes-syslinux>` class as follows: 9504 :ref:`ref-classes-syslinux` class as follows::
7509 ::
7510 9505
7511 SYSLINUX_SERIAL ?= "0 115200" 9506 SYSLINUX_SERIAL ?= "0 115200"
7512 9507
@@ -7514,9 +9509,8 @@ system and gives an overview of their function and contents.
7514 9509
7515 :term:`SYSLINUX_SERIAL_TTY` 9510 :term:`SYSLINUX_SERIAL_TTY`
7516 Specifies the alternate console=tty... kernel boot argument. The 9511 Specifies the alternate console=tty... kernel boot argument. The
7517 variable's default value is set in the 9512 variable's default value is set in the :ref:`ref-classes-syslinux`
7518 :ref:`syslinux <ref-classes-syslinux>` class as follows: 9513 class as follows::
7519 ::
7520 9514
7521 SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200" 9515 SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
7522 9516
@@ -7526,7 +9520,7 @@ system and gives an overview of their function and contents.
7526 An ``.LSS`` file used as the background for the VGA boot menu when 9520 An ``.LSS`` file used as the background for the VGA boot menu when
7527 you use the boot menu. You need to set this variable in your recipe. 9521 you use the boot menu. You need to set this variable in your recipe.
7528 9522
7529 The :ref:`syslinux <ref-classes-syslinux>` class checks for this 9523 The :ref:`ref-classes-syslinux` class checks for this
7530 variable and if found, the OpenEmbedded build system installs the 9524 variable and if found, the OpenEmbedded build system installs the
7531 splash screen. 9525 splash screen.
7532 9526
@@ -7539,8 +9533,7 @@ system and gives an overview of their function and contents.
7539 :term:`SYSROOT_DIRS` 9533 :term:`SYSROOT_DIRS`
7540 Directories that are staged into the sysroot by the 9534 Directories that are staged into the sysroot by the
7541 :ref:`ref-tasks-populate_sysroot` task. By 9535 :ref:`ref-tasks-populate_sysroot` task. By
7542 default, the following directories are staged: 9536 default, the following directories are staged::
7543 ::
7544 9537
7545 SYSROOT_DIRS = " \ 9538 SYSROOT_DIRS = " \
7546 ${includedir} \ 9539 ${includedir} \
@@ -7548,24 +9541,59 @@ system and gives an overview of their function and contents.
7548 ${base_libdir} \ 9541 ${base_libdir} \
7549 ${nonarch_base_libdir} \ 9542 ${nonarch_base_libdir} \
7550 ${datadir} \ 9543 ${datadir} \
9544 /sysroot-only \
7551 " 9545 "
7552 9546
7553 :term:`SYSROOT_DIRS_BLACKLIST` 9547 Consider the following example in which you need to manipulate this variable.
9548 Assume you have a recipe ``A`` that provides a shared library ``.so.*`` that is
9549 installed into a custom folder other than "``${libdir}``"
9550 or "``${base_libdir}``", let's say "``/opt/lib``".
9551
9552 .. note::
9553
9554 This is not a recommended way to deal with shared libraries, but this
9555 is just to show the usefulness of setting :term:`SYSROOT_DIRS`.
9556
9557 When a recipe ``B`` :term:`DEPENDS` on ``A``, it means what is in
9558 :term:`SYSROOT_DIRS` will be copied from :term:`D` of the recipe ``A``
9559 into ``B``'s :term:`SYSROOT_DESTDIR` that is "``${WORKDIR}/sysroot-destdir``".
9560
9561 Now, since ``/opt/lib`` is not in :term:`SYSROOT_DIRS`, it will never be copied to
9562 ``A``'s :term:`RECIPE_SYSROOT`, which is "``${WORKDIR}/recipe-sysroot``". So,
9563 the linking process will fail.
9564
9565 To fix this, you need to add ``/opt/lib`` to :term:`SYSROOT_DIRS`::
9566
9567 SYSROOT_DIRS:append = " /opt/lib"
9568
9569 .. note::
9570 Even after setting ``/opt/lib`` to :term:`SYSROOT_DIRS`, the linking process will still fail
9571 because the linker does not know that location, since :term:`TARGET_LDFLAGS`
9572 doesn't contain it (if your recipe is for the target). Therefore, so you should add::
9573
9574 TARGET_LDFLAGS:append = " -L${RECIPE_SYSROOT}/opt/lib"
9575
9576 :term:`SYSROOT_DIRS_IGNORE`
7554 Directories that are not staged into the sysroot by the 9577 Directories that are not staged into the sysroot by the
7555 :ref:`ref-tasks-populate_sysroot` task. You 9578 :ref:`ref-tasks-populate_sysroot` task. You
7556 can use this variable to exclude certain subdirectories of 9579 can use this variable to exclude certain subdirectories of
7557 directories listed in :term:`SYSROOT_DIRS` from 9580 directories listed in :term:`SYSROOT_DIRS` from
7558 staging. By default, the following directories are not staged: 9581 staging. By default, the following directories are not staged::
7559 ::
7560 9582
7561 SYSROOT_DIRS_BLACKLIST = " \ 9583 SYSROOT_DIRS_IGNORE = " \
7562 ${mandir} \ 9584 ${mandir} \
7563 ${docdir} \ 9585 ${docdir} \
7564 ${infodir} \ 9586 ${infodir} \
7565 ${datadir}/locale \ 9587 ${datadir}/X11/locale \
7566 ${datadir}/applications \ 9588 ${datadir}/applications \
9589 ${datadir}/bash-completion \
7567 ${datadir}/fonts \ 9590 ${datadir}/fonts \
9591 ${datadir}/gtk-doc/html \
9592 ${datadir}/installed-tests \
9593 ${datadir}/locale \
7568 ${datadir}/pixmaps \ 9594 ${datadir}/pixmaps \
9595 ${datadir}/terminfo \
9596 ${libdir}/${BPN}/ptest \
7569 " 9597 "
7570 9598
7571 :term:`SYSROOT_DIRS_NATIVE` 9599 :term:`SYSROOT_DIRS_NATIVE`
@@ -7573,8 +9601,7 @@ system and gives an overview of their function and contents.
7573 :ref:`ref-tasks-populate_sysroot` task for 9601 :ref:`ref-tasks-populate_sysroot` task for
7574 ``-native`` recipes, in addition to those specified in 9602 ``-native`` recipes, in addition to those specified in
7575 :term:`SYSROOT_DIRS`. By default, the following 9603 :term:`SYSROOT_DIRS`. By default, the following
7576 extra directories are staged: 9604 extra directories are staged::
7577 ::
7578 9605
7579 SYSROOT_DIRS_NATIVE = " \ 9606 SYSROOT_DIRS_NATIVE = " \
7580 ${bindir} \ 9607 ${bindir} \
@@ -7598,13 +9625,12 @@ system and gives an overview of their function and contents.
7598 processing on the staged files, or to stage additional files. 9625 processing on the staged files, or to stage additional files.
7599 9626
7600 :term:`SYSTEMD_AUTO_ENABLE` 9627 :term:`SYSTEMD_AUTO_ENABLE`
7601 When inheriting the :ref:`systemd <ref-classes-systemd>` class, 9628 When inheriting the :ref:`ref-classes-systemd` class,
7602 this variable specifies whether the specified service in 9629 this variable specifies whether the specified service in
7603 :term:`SYSTEMD_SERVICE` should start 9630 :term:`SYSTEMD_SERVICE` should start
7604 automatically or not. By default, the service is enabled to 9631 automatically or not. By default, the service is enabled to
7605 automatically start at boot time. The default setting is in the 9632 automatically start at boot time. The default setting is in the
7606 :ref:`systemd <ref-classes-systemd>` class as follows: 9633 :ref:`ref-classes-systemd` class as follows::
7607 ::
7608 9634
7609 SYSTEMD_AUTO_ENABLE ??= "enable" 9635 SYSTEMD_AUTO_ENABLE ??= "enable"
7610 9636
@@ -7612,25 +9638,22 @@ system and gives an overview of their function and contents.
7612 9638
7613 :term:`SYSTEMD_BOOT_CFG` 9639 :term:`SYSTEMD_BOOT_CFG`
7614 When :term:`EFI_PROVIDER` is set to 9640 When :term:`EFI_PROVIDER` is set to
7615 "systemd-boot", the ``SYSTEMD_BOOT_CFG`` variable specifies the 9641 "systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the
7616 configuration file that should be used. By default, the 9642 configuration file that should be used. By default, the
7617 :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the 9643 :ref:`ref-classes-systemd-boot` class sets the
7618 ``SYSTEMD_BOOT_CFG`` as follows: 9644 :term:`SYSTEMD_BOOT_CFG` as follows::
7619 ::
7620 9645
7621 SYSTEMD_BOOT_CFG ?= "${:term:`S`}/loader.conf" 9646 SYSTEMD_BOOT_CFG ?= "${S}/loader.conf"
7622 9647
7623 For information on Systemd-boot, see the `Systemd-boot 9648 For information on Systemd-boot, see the `Systemd-boot
7624 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 9649 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
7625 9650
7626 :term:`SYSTEMD_BOOT_ENTRIES` 9651 :term:`SYSTEMD_BOOT_ENTRIES`
7627 When :term:`EFI_PROVIDER` is set to 9652 When :term:`EFI_PROVIDER` is set to
7628 "systemd-boot", the ``SYSTEMD_BOOT_ENTRIES`` variable specifies a 9653 "systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a
7629 list of entry files (``*.conf``) to install that contain one boot 9654 list of entry files (``*.conf``) to install that contain one boot
7630 entry per file. By default, the 9655 entry per file. By default, the :ref:`ref-classes-systemd-boot` class
7631 :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the 9656 sets the :term:`SYSTEMD_BOOT_ENTRIES` as follows::
7632 ``SYSTEMD_BOOT_ENTRIES`` as follows:
7633 ::
7634 9657
7635 SYSTEMD_BOOT_ENTRIES ?= "" 9658 SYSTEMD_BOOT_ENTRIES ?= ""
7636 9659
@@ -7639,58 +9662,75 @@ system and gives an overview of their function and contents.
7639 9662
7640 :term:`SYSTEMD_BOOT_TIMEOUT` 9663 :term:`SYSTEMD_BOOT_TIMEOUT`
7641 When :term:`EFI_PROVIDER` is set to 9664 When :term:`EFI_PROVIDER` is set to
7642 "systemd-boot", the ``SYSTEMD_BOOT_TIMEOUT`` variable specifies the 9665 "systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the
7643 boot menu timeout in seconds. By default, the 9666 boot menu timeout in seconds. By default, the
7644 :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the 9667 :ref:`ref-classes-systemd-boot` class sets the
7645 ``SYSTEMD_BOOT_TIMEOUT`` as follows: 9668 :term:`SYSTEMD_BOOT_TIMEOUT` as follows::
7646 ::
7647 9669
7648 SYSTEMD_BOOT_TIMEOUT ?= "10" 9670 SYSTEMD_BOOT_TIMEOUT ?= "10"
7649 9671
7650 For information on Systemd-boot, see the `Systemd-boot 9672 For information on Systemd-boot, see the `Systemd-boot
7651 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 9673 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
7652 9674
9675 :term:`SYSTEMD_DEFAULT_TARGET`
9676
9677 This variable allows to set the default unit that systemd starts at bootup.
9678 Usually, this is either ``multi-user.target`` or ``graphical.target``.
9679 This works by creating a ``default.target`` symbolic link to the chosen systemd
9680 target file.
9681
9682 See `systemd's documentation
9683 <https://www.freedesktop.org/software/systemd/man/systemd.special.html>`__
9684 for details.
9685
9686 For example, this variable is used in the :oe_git:`core-image-minimal-xfce.bb
9687 </meta-openembedded/tree/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb>`
9688 recipe::
9689
9690 SYSTEMD_DEFAULT_TARGET = "graphical.target"
9691
7653 :term:`SYSTEMD_PACKAGES` 9692 :term:`SYSTEMD_PACKAGES`
7654 When inheriting the :ref:`systemd <ref-classes-systemd>` class, 9693 When inheriting the :ref:`ref-classes-systemd` class,
7655 this variable locates the systemd unit files when they are not found 9694 this variable locates the systemd unit files when they are not found
7656 in the main recipe's package. By default, the ``SYSTEMD_PACKAGES`` 9695 in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES`
7657 variable is set such that the systemd unit files are assumed to 9696 variable is set such that the systemd unit files are assumed to
7658 reside in the recipes main package: 9697 reside in the recipes main package::
7659 ::
7660 9698
7661 SYSTEMD_PACKAGES ?= "${PN}" 9699 SYSTEMD_PACKAGES ?= "${PN}"
7662 9700
7663 If these unit files are not in this recipe's main package, you need 9701 If these unit files are not in this recipe's main package, you need
7664 to use ``SYSTEMD_PACKAGES`` to list the package or packages in which 9702 to use :term:`SYSTEMD_PACKAGES` to list the package or packages in which
7665 the build system can find the systemd unit files. 9703 the build system can find the systemd unit files.
7666 9704
7667 :term:`SYSTEMD_SERVICE` 9705 :term:`SYSTEMD_SERVICE`
7668 When inheriting the :ref:`systemd <ref-classes-systemd>` class, 9706 When inheriting the :ref:`ref-classes-systemd` class,
7669 this variable specifies the systemd service name for a package. 9707 this variable specifies the systemd service name for a package.
7670 9708
9709 Multiple services can be specified, each one separated by a space.
9710
7671 When you specify this file in your recipe, use a package name 9711 When you specify this file in your recipe, use a package name
7672 override to indicate the package to which the value applies. Here is 9712 override to indicate the package to which the value applies. Here is
7673 an example from the connman recipe: 9713 an example from the connman recipe::
7674 ::
7675 9714
7676 SYSTEMD_SERVICE_${PN} = "connman.service" 9715 SYSTEMD_SERVICE:${PN} = "connman.service"
9716
9717 The package overrides that can be specified are directly related to the value of
9718 :term:`SYSTEMD_PACKAGES`. Overrides not included in :term:`SYSTEMD_PACKAGES`
9719 will be silently ignored.
7677 9720
7678 :term:`SYSVINIT_ENABLED_GETTYS` 9721 :term:`SYSVINIT_ENABLED_GETTYS`
7679 When using 9722 When using :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
7680 :ref:`SysVinit <dev-manual/common-tasks:enabling system services>`,
7681 specifies a space-separated list of the virtual terminals that should 9723 specifies a space-separated list of the virtual terminals that should
7682 run a `getty <https://en.wikipedia.org/wiki/Getty_%28Unix%29>`__ 9724 run a :wikipedia:`getty <Getty_(Unix)>` (allowing login), assuming
7683 (allowing login), assuming :term:`USE_VT` is not set to 9725 :term:`USE_VT` is not set to "0".
7684 "0".
7685 9726
7686 The default value for ``SYSVINIT_ENABLED_GETTYS`` is "1" (i.e. only 9727 The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only
7687 run a getty on the first virtual terminal). 9728 run a getty on the first virtual terminal).
7688 9729
7689 :term:`T` 9730 :term:`T`
7690 This variable points to a directory were BitBake places temporary 9731 This variable points to a directory were BitBake places temporary
7691 files, which consist mostly of task logs and scripts, when building a 9732 files, which consist mostly of task logs and scripts, when building a
7692 particular recipe. The variable is typically set as follows: 9733 particular recipe. The variable is typically set as follows::
7693 ::
7694 9734
7695 T = "${WORKDIR}/temp" 9735 T = "${WORKDIR}/temp"
7696 9736
@@ -7698,7 +9738,7 @@ system and gives an overview of their function and contents.
7698 BitBake unpacks and builds the recipe. The default ``bitbake.conf`` 9738 BitBake unpacks and builds the recipe. The default ``bitbake.conf``
7699 file sets this variable. 9739 file sets this variable.
7700 9740
7701 The ``T`` variable is not to be confused with the 9741 The :term:`T` variable is not to be confused with the
7702 :term:`TMPDIR` variable, which points to the root of 9742 :term:`TMPDIR` variable, which points to the root of
7703 the directory tree where BitBake places the output of an entire 9743 the directory tree where BitBake places the output of an entire
7704 build. 9744 build.
@@ -7722,29 +9762,28 @@ system and gives an overview of their function and contents.
7722 9762
7723 :term:`TARGET_AS_ARCH` 9763 :term:`TARGET_AS_ARCH`
7724 Specifies architecture-specific assembler flags for the target 9764 Specifies architecture-specific assembler flags for the target
7725 system. ``TARGET_AS_ARCH`` is initialized from 9765 system. :term:`TARGET_AS_ARCH` is initialized from
7726 :term:`TUNE_ASARGS` by default in the BitBake 9766 :term:`TUNE_ASARGS` by default in the BitBake
7727 configuration file (``meta/conf/bitbake.conf``): 9767 configuration file (``meta/conf/bitbake.conf``)::
7728 ::
7729 9768
7730 TARGET_AS_ARCH = "${TUNE_ASARGS}" 9769 TARGET_AS_ARCH = "${TUNE_ASARGS}"
7731 9770
7732 :term:`TARGET_CC_ARCH` 9771 :term:`TARGET_CC_ARCH`
7733 Specifies architecture-specific C compiler flags for the target 9772 Specifies architecture-specific C compiler flags for the target
7734 system. ``TARGET_CC_ARCH`` is initialized from 9773 system. :term:`TARGET_CC_ARCH` is initialized from
7735 :term:`TUNE_CCARGS` by default. 9774 :term:`TUNE_CCARGS` by default.
7736 9775
7737 .. note:: 9776 .. note::
7738 9777
7739 It is a common workaround to append :term:`LDFLAGS` to 9778 It is a common workaround to append :term:`LDFLAGS` to
7740 ``TARGET_CC_ARCH`` in recipes that build software for the target that 9779 :term:`TARGET_CC_ARCH` in recipes that build software for the target that
7741 would not otherwise respect the exported ``LDFLAGS`` variable. 9780 would not otherwise respect the exported :term:`LDFLAGS` variable.
7742 9781
7743 :term:`TARGET_CC_KERNEL_ARCH` 9782 :term:`TARGET_CC_KERNEL_ARCH`
7744 This is a specific kernel compiler flag for a CPU or Application 9783 This is a specific kernel compiler flag for a CPU or Application
7745 Binary Interface (ABI) tune. The flag is used rarely and only for 9784 Binary Interface (ABI) tune. The flag is used rarely and only for
7746 cases where a userspace :term:`TUNE_CCARGS` is not 9785 cases where a userspace :term:`TUNE_CCARGS` is not
7747 compatible with the kernel compilation. The ``TARGET_CC_KERNEL_ARCH`` 9786 compatible with the kernel compilation. The :term:`TARGET_CC_KERNEL_ARCH`
7748 variable allows the kernel (and associated modules) to use a 9787 variable allows the kernel (and associated modules) to use a
7749 different configuration. See the 9788 different configuration. See the
7750 ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the 9789 ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the
@@ -7756,8 +9795,8 @@ system and gives an overview of their function and contents.
7756 :term:`CFLAGS` is set to the value of this variable by 9795 :term:`CFLAGS` is set to the value of this variable by
7757 default. 9796 default.
7758 9797
7759 Additionally, the SDK's environment setup script sets the ``CFLAGS`` 9798 Additionally, the SDK's environment setup script sets the :term:`CFLAGS`
7760 variable in the environment to the ``TARGET_CFLAGS`` value so that 9799 variable in the environment to the :term:`TARGET_CFLAGS` value so that
7761 executables built using the SDK also have the flags applied. 9800 executables built using the SDK also have the flags applied.
7762 9801
7763 :term:`TARGET_CPPFLAGS` 9802 :term:`TARGET_CPPFLAGS`
@@ -7767,7 +9806,7 @@ system and gives an overview of their function and contents.
7767 value of this variable by default. 9806 value of this variable by default.
7768 9807
7769 Additionally, the SDK's environment setup script sets the 9808 Additionally, the SDK's environment setup script sets the
7770 ``CPPFLAGS`` variable in the environment to the ``TARGET_CPPFLAGS`` 9809 :term:`CPPFLAGS` variable in the environment to the :term:`TARGET_CPPFLAGS`
7771 value so that executables built using the SDK also have the flags 9810 value so that executables built using the SDK also have the flags
7772 applied. 9811 applied.
7773 9812
@@ -7778,10 +9817,14 @@ system and gives an overview of their function and contents.
7778 by default. 9817 by default.
7779 9818
7780 Additionally, the SDK's environment setup script sets the 9819 Additionally, the SDK's environment setup script sets the
7781 ``CXXFLAGS`` variable in the environment to the ``TARGET_CXXFLAGS`` 9820 :term:`CXXFLAGS` variable in the environment to the :term:`TARGET_CXXFLAGS`
7782 value so that executables built using the SDK also have the flags 9821 value so that executables built using the SDK also have the flags
7783 applied. 9822 applied.
7784 9823
9824 :term:`TARGET_DBGSRC_DIR`
9825 Specifies the target path to debug source files. The default is
9826 ``/usr/src/debug/${PN}/${PV}``.
9827
7785 :term:`TARGET_FPU` 9828 :term:`TARGET_FPU`
7786 Specifies the method for handling FPU code. For FPU-less targets, 9829 Specifies the method for handling FPU code. For FPU-less targets,
7787 which include most ARM CPUs, the variable must be set to "soft". If 9830 which include most ARM CPUs, the variable must be set to "soft". If
@@ -7790,10 +9833,9 @@ system and gives an overview of their function and contents.
7790 9833
7791 :term:`TARGET_LD_ARCH` 9834 :term:`TARGET_LD_ARCH`
7792 Specifies architecture-specific linker flags for the target system. 9835 Specifies architecture-specific linker flags for the target system.
7793 ``TARGET_LD_ARCH`` is initialized from 9836 :term:`TARGET_LD_ARCH` is initialized from
7794 :term:`TUNE_LDARGS` by default in the BitBake 9837 :term:`TUNE_LDARGS` by default in the BitBake
7795 configuration file (``meta/conf/bitbake.conf``): 9838 configuration file (``meta/conf/bitbake.conf``)::
7796 ::
7797 9839
7798 TARGET_LD_ARCH = "${TUNE_LDARGS}" 9840 TARGET_LD_ARCH = "${TUNE_LDARGS}"
7799 9841
@@ -7805,29 +9847,29 @@ system and gives an overview of their function and contents.
7805 9847
7806 Additionally, the SDK's environment setup script sets the 9848 Additionally, the SDK's environment setup script sets the
7807 :term:`LDFLAGS` variable in the environment to the 9849 :term:`LDFLAGS` variable in the environment to the
7808 ``TARGET_LDFLAGS`` value so that executables built using the SDK also 9850 :term:`TARGET_LDFLAGS` value so that executables built using the SDK also
7809 have the flags applied. 9851 have the flags applied.
7810 9852
7811 :term:`TARGET_OS` 9853 :term:`TARGET_OS`
7812 Specifies the target's operating system. The variable can be set to 9854 Specifies the target's operating system. The variable can be set to
7813 "linux" for glibc-based systems (GNU C Library) and to "linux-musl" 9855 "linux" for glibc-based systems (GNU C Library) and to "linux-musl"
7814 for musl libc. For ARM/EABI targets, "linux-gnueabi" and 9856 for musl libc. For ARM/EABI targets, the possible values are
7815 "linux-musleabi" possible values exist. 9857 "linux-gnueabi" and "linux-musleabi".
7816 9858
7817 :term:`TARGET_PREFIX` 9859 :term:`TARGET_PREFIX`
7818 Specifies the prefix used for the toolchain binary target tools. 9860 Specifies the prefix used for the toolchain binary target tools.
7819 9861
7820 Depending on the type of recipe and the build target, 9862 Depending on the type of recipe and the build target,
7821 ``TARGET_PREFIX`` is set as follows: 9863 :term:`TARGET_PREFIX` is set as follows:
7822 9864
7823 - For recipes building for the target machine, the value is 9865 - For recipes building for the target machine, the value is
7824 "${:term:`TARGET_SYS`}-". 9866 "${:term:`TARGET_SYS`}-".
7825 9867
7826 - For native recipes, the build system sets the variable to the 9868 - For native recipes, the build system sets the variable to the
7827 value of ``BUILD_PREFIX``. 9869 value of :term:`BUILD_PREFIX`.
7828 9870
7829 - For native SDK recipes (``nativesdk``), the build system sets the 9871 - For native SDK recipes (:ref:`ref-classes-nativesdk`),
7830 variable to the value of ``SDK_PREFIX``. 9872 the build system sets the variable to the value of :term:`SDK_PREFIX`.
7831 9873
7832 :term:`TARGET_SYS` 9874 :term:`TARGET_SYS`
7833 Specifies the system, including the architecture and the operating 9875 Specifies the system, including the architecture and the operating
@@ -7841,7 +9883,7 @@ system and gives an overview of their function and contents.
7841 9883
7842 .. note:: 9884 .. note::
7843 9885
7844 You do not need to set the ``TARGET_SYS`` variable yourself. 9886 You do not need to set the :term:`TARGET_SYS` variable yourself.
7845 9887
7846 Consider these two examples: 9888 Consider these two examples:
7847 9889
@@ -7854,29 +9896,20 @@ system and gives an overview of their function and contents.
7854 :term:`TARGET_VENDOR` 9896 :term:`TARGET_VENDOR`
7855 Specifies the name of the target vendor. 9897 Specifies the name of the target vendor.
7856 9898
7857 :term:`TCLIBC` 9899 :term:`TC_CXX_RUNTIME`
7858 Specifies the GNU standard C library (``libc``) variant to use during 9900 Specifies the C/C++ STL and runtime variant to use during
7859 the build process. This variable replaces ``POKYLIBC``, which is no 9901 the build process. Default value is 'gnu'
7860 longer supported.
7861 9902
7862 You can select "glibc", "musl", "newlib", or "baremetal" 9903 You can select "gnu", "llvm", or "android".
7863 9904
7864 :term:`TCLIBCAPPEND` 9905 :term:`TCLIBC`
7865 Specifies a suffix to be appended onto the 9906 Specifies the GNU standard C library (``libc``) variant to use during
7866 :term:`TMPDIR` value. The suffix identifies the 9907 the build process.
7867 ``libc`` variant for building. When you are building for multiple
7868 variants with the same :term:`Build Directory`, this
7869 mechanism ensures that output for different ``libc`` variants is kept
7870 separate to avoid potential conflicts.
7871 9908
7872 In the ``defaultsetup.conf`` file, the default value of 9909 You can select "glibc", "musl", "newlib", or "baremetal".
7873 ``TCLIBCAPPEND`` is "-${TCLIBC}". However, distros such as poky,
7874 which normally only support one ``libc`` variant, set
7875 ``TCLIBCAPPEND`` to "" in their distro configuration file resulting
7876 in no suffix being applied.
7877 9910
7878 :term:`TCMODE` 9911 :term:`TCMODE`
7879 Specifies the toolchain selector. ``TCMODE`` controls the 9912 Specifies the toolchain selector. :term:`TCMODE` controls the
7880 characteristics of the generated packages and images by telling the 9913 characteristics of the generated packages and images by telling the
7881 OpenEmbedded build system which toolchain profile to use. By default, 9914 OpenEmbedded build system which toolchain profile to use. By default,
7882 the OpenEmbedded build system builds its own internal toolchain. The 9915 the OpenEmbedded build system builds its own internal toolchain. The
@@ -7885,17 +9918,15 @@ system and gives an overview of their function and contents.
7885 9918
7886 .. note:: 9919 .. note::
7887 9920
7888 If ``TCMODE`` is set to a value other than "default", then it is your 9921 If :term:`TCMODE` is set to a value other than "default", then it is your
7889 responsibility to ensure that the toolchain is compatible with the 9922 responsibility to ensure that the toolchain is compatible with the
7890 default toolchain. Using older or newer versions of these 9923 default toolchain. Using older or newer versions of these
7891 components might cause build problems. See the Release Notes for 9924 components might cause build problems. See
7892 the Yocto Project release for the specific components with which 9925 :doc:`Release Information </migration-guides/index>` for your
7893 the toolchain must be compatible. To access the Release Notes, go 9926 version of the Yocto Project, to find the specific components with
7894 to the :yocto_home:`Downloads </software-overview/downloads>` 9927 which the toolchain must be compatible.
7895 page on the Yocto Project website and click on the "RELEASE 9928
7896 INFORMATION" link for the appropriate release. 9929 The :term:`TCMODE` variable is similar to :term:`TCLIBC`,
7897
7898 The ``TCMODE`` variable is similar to :term:`TCLIBC`,
7899 which controls the variant of the GNU standard C library (``libc``) 9930 which controls the variant of the GNU standard C library (``libc``)
7900 used during the build process: ``glibc`` or ``musl``. 9931 used during the build process: ``glibc`` or ``musl``.
7901 9932
@@ -7906,22 +9937,41 @@ system and gives an overview of their function and contents.
7906 https://github.com/MentorEmbedded/meta-sourcery/. 9937 https://github.com/MentorEmbedded/meta-sourcery/.
7907 9938
7908 The layer's ``README`` file contains information on how to use the 9939 The layer's ``README`` file contains information on how to use the
7909 Sourcery G++ Toolchain as an external toolchain. In summary, you must 9940 Sourcery G++ Toolchain as an external toolchain. You will have to
7910 be sure to add the layer to your ``bblayers.conf`` file in front of 9941 add the layer to your ``bblayers.conf`` file and then set the
7911 the ``meta`` layer and then set the ``EXTERNAL_TOOLCHAIN`` variable 9942 :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file to
7912 in your ``local.conf`` file to the location in which you installed 9943 the location of the toolchain.
7913 the toolchain.
7914 9944
7915 The fundamentals used for this example apply to any external 9945 The fundamentals used for this example apply to any external
7916 toolchain. You can use ``meta-sourcery`` as a template for adding 9946 toolchain. You can use ``meta-sourcery`` as a template for adding
7917 support for other external toolchains. 9947 support for other external toolchains.
7918 9948
9949 In addition to toolchain configuration, you will also need a
9950 corresponding toolchain recipe file. This recipe file needs to package
9951 up any pre-built objects in the toolchain such as ``libgcc``,
9952 ``libstdcc++``, any locales, and ``libc``.
9953
9954 :term:`TEMPLATECONF`
9955 Specifies the directory used by the build system to find templates
9956 from which to build the ``bblayers.conf`` and ``local.conf`` files.
9957 Use this variable if you wish to customize such files, and the default
9958 BitBake targets shown when sourcing the ``oe-init-build-env`` script.
9959
9960 For details, see the
9961 :ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`
9962 section in the Yocto Project Development Tasks manual.
9963
9964 .. note::
9965
9966 You must set this variable in the external environment in order
9967 for it to work.
9968
7919 :term:`TEST_EXPORT_DIR` 9969 :term:`TEST_EXPORT_DIR`
7920 The location the OpenEmbedded build system uses to export tests when 9970 The location the OpenEmbedded build system uses to export tests when
7921 the :term:`TEST_EXPORT_ONLY` variable is set 9971 the :term:`TEST_EXPORT_ONLY` variable is set
7922 to "1". 9972 to "1".
7923 9973
7924 The ``TEST_EXPORT_DIR`` variable defaults to 9974 The :term:`TEST_EXPORT_DIR` variable defaults to
7925 ``"${TMPDIR}/testimage/${PN}"``. 9975 ``"${TMPDIR}/testimage/${PN}"``.
7926 9976
7927 :term:`TEST_EXPORT_ONLY` 9977 :term:`TEST_EXPORT_ONLY`
@@ -7931,7 +9981,7 @@ system and gives an overview of their function and contents.
7931 9981
7932 :term:`TEST_LOG_DIR` 9982 :term:`TEST_LOG_DIR`
7933 Holds the SSH log and the boot log for QEMU machines. The 9983 Holds the SSH log and the boot log for QEMU machines. The
7934 ``TEST_LOG_DIR`` variable defaults to ``"${WORKDIR}/testimage"``. 9984 :term:`TEST_LOG_DIR` variable defaults to ``"${WORKDIR}/testimage"``.
7935 9985
7936 .. note:: 9986 .. note::
7937 9987
@@ -7951,7 +10001,7 @@ system and gives an overview of their function and contents.
7951 For automated hardware testing, specifies additional arguments to 10001 For automated hardware testing, specifies additional arguments to
7952 pass through to the command specified in 10002 pass through to the command specified in
7953 :term:`TEST_POWERCONTROL_CMD`. Setting 10003 :term:`TEST_POWERCONTROL_CMD`. Setting
7954 ``TEST_POWERCONTROL_EXTRA_ARGS`` is optional. You can use it if you 10004 :term:`TEST_POWERCONTROL_EXTRA_ARGS` is optional. You can use it if you
7955 wish, for example, to separate the machine-specific and 10005 wish, for example, to separate the machine-specific and
7956 non-machine-specific parts of the arguments. 10006 non-machine-specific parts of the arguments.
7957 10007
@@ -7963,8 +10013,8 @@ system and gives an overview of their function and contents.
7963 file. 10013 file.
7964 10014
7965 For more information on testing images, see the 10015 For more information on testing images, see the
7966 ":ref:`dev-manual/common-tasks:performing automated runtime testing`" 10016 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
7967 section in the Yocto Project Development Tasks Manual. 10017 section in the Yocto Project Test Environment Manual.
7968 10018
7969 :term:`TEST_SERIALCONTROL_CMD` 10019 :term:`TEST_SERIALCONTROL_CMD`
7970 For automated hardware testing, specifies the command to use to 10020 For automated hardware testing, specifies the command to use to
@@ -7974,8 +10024,7 @@ system and gives an overview of their function and contents.
7974 program does. 10024 program does.
7975 10025
7976 For example, to use the Picocom terminal program on serial device 10026 For example, to use the Picocom terminal program on serial device
7977 ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows: 10027 ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows::
7978 ::
7979 10028
7980 TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200" 10029 TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200"
7981 10030
@@ -7983,7 +10032,7 @@ system and gives an overview of their function and contents.
7983 For automated hardware testing, specifies additional arguments to 10032 For automated hardware testing, specifies additional arguments to
7984 pass through to the command specified in 10033 pass through to the command specified in
7985 :term:`TEST_SERIALCONTROL_CMD`. Setting 10034 :term:`TEST_SERIALCONTROL_CMD`. Setting
7986 ``TEST_SERIALCONTROL_EXTRA_ARGS`` is optional. You can use it if you 10035 :term:`TEST_SERIALCONTROL_EXTRA_ARGS` is optional. You can use it if you
7987 wish, for example, to separate the machine-specific and 10036 wish, for example, to separate the machine-specific and
7988 non-machine-specific parts of the command. 10037 non-machine-specific parts of the command.
7989 10038
@@ -7995,7 +10044,7 @@ system and gives an overview of their function and contents.
7995 10044
7996 .. note:: 10045 .. note::
7997 10046
7998 The ``TEST_SERVER_IP`` variable is only used for a small number of 10047 The :term:`TEST_SERVER_IP` variable is only used for a small number of
7999 tests such as the "dnf" test suite, which needs to download packages 10048 tests such as the "dnf" test suite, which needs to download packages
8000 from ``WORKDIR/oe-rootfs-repo``. 10049 from ``WORKDIR/oe-rootfs-repo``.
8001 10050
@@ -8012,18 +10061,16 @@ system and gives an overview of their function and contents.
8012 QEMU. 10061 QEMU.
8013 10062
8014 Tests include ``ping``, ``ssh``, ``df`` among others. You can add 10063 Tests include ``ping``, ``ssh``, ``df`` among others. You can add
8015 your own tests to the list of tests by appending ``TEST_SUITES`` as 10064 your own tests to the list of tests by appending :term:`TEST_SUITES` as
8016 follows: 10065 follows::
8017 ::
8018 10066
8019 TEST_SUITES_append = " mytest" 10067 TEST_SUITES:append = " mytest"
8020 10068
8021 Alternatively, you can 10069 Alternatively, you can
8022 provide the "auto" option to have all applicable tests run against 10070 provide the "auto" option to have all applicable tests run against
8023 the image. 10071 the image::
8024 ::
8025 10072
8026 TEST_SUITES_append = " auto" 10073 TEST_SUITES:append = " auto"
8027 10074
8028 Using this option causes the 10075 Using this option causes the
8029 build system to automatically run tests that are applicable to the 10076 build system to automatically run tests that are applicable to the
@@ -8033,19 +10080,17 @@ system and gives an overview of their function and contents.
8033 another test must appear later in the list than the test on which 10080 another test must appear later in the list than the test on which
8034 they depend. For example, if you append the list of tests with two 10081 they depend. For example, if you append the list of tests with two
8035 tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on 10082 tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on
8036 ``test_A``, then you must order the tests as follows: 10083 ``test_A``, then you must order the tests as follows::
8037 ::
8038 10084
8039 TEST_SUITES = "test_A test_B" 10085 TEST_SUITES = "test_A test_B"
8040 10086
8041 For more information on testing images, see the 10087 For more information on testing images, see the
8042 ":ref:`dev-manual/common-tasks:performing automated runtime testing`" 10088 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
8043 section in the Yocto Project Development Tasks Manual. 10089 section in the Yocto Project Test Environment Manual.
8044 10090
8045 :term:`TEST_TARGET` 10091 :term:`TEST_TARGET`
8046 Specifies the target controller to use when running tests against a 10092 Specifies the target controller to use when running tests against a
8047 test image. The default controller to use is "qemu": 10093 test image. The default controller to use is "qemu"::
8048 ::
8049 10094
8050 TEST_TARGET = "qemu" 10095 TEST_TARGET = "qemu"
8051 10096
@@ -8054,13 +10099,13 @@ system and gives an overview of their function and contents.
8054 the controllers by adding a module in the layer's 10099 the controllers by adding a module in the layer's
8055 ``/lib/oeqa/controllers`` directory and by inheriting the 10100 ``/lib/oeqa/controllers`` directory and by inheriting the
8056 ``BaseTarget`` class, which is an abstract class that cannot be used 10101 ``BaseTarget`` class, which is an abstract class that cannot be used
8057 as a value of ``TEST_TARGET``. 10102 as a value of :term:`TEST_TARGET`.
8058 10103
8059 You can provide the following arguments with ``TEST_TARGET``: 10104 You can provide the following arguments with :term:`TEST_TARGET`:
8060 10105
8061 - *"qemu":* Boots a QEMU image and runs the tests. See the 10106 - *"qemu":* Boots a QEMU image and runs the tests. See the
8062 ":ref:`dev-manual/common-tasks:enabling runtime tests on qemu`" section 10107 ":ref:`test-manual/runtime-testing:enabling runtime tests on qemu`" section
8063 in the Yocto Project Development Tasks Manual for more 10108 in the Yocto Project Test Environment Manual for more
8064 information. 10109 information.
8065 10110
8066 - *"simpleremote":* Runs the tests on target hardware that is 10111 - *"simpleremote":* Runs the tests on target hardware that is
@@ -8075,17 +10120,16 @@ system and gives an overview of their function and contents.
8075 ``meta/lib/oeqa/controllers/simpleremote.py``. 10120 ``meta/lib/oeqa/controllers/simpleremote.py``.
8076 10121
8077 For information on running tests on hardware, see the 10122 For information on running tests on hardware, see the
8078 ":ref:`dev-manual/common-tasks:enabling runtime tests on hardware`" 10123 ":ref:`test-manual/runtime-testing:enabling runtime tests on hardware`"
8079 section in the Yocto Project Development Tasks Manual. 10124 section in the Yocto Project Test Environment Manual.
8080 10125
8081 :term:`TEST_TARGET_IP` 10126 :term:`TEST_TARGET_IP`
8082 The IP address of your hardware under test. The ``TEST_TARGET_IP`` 10127 The IP address of your hardware under test. The :term:`TEST_TARGET_IP`
8083 variable has no effect when :term:`TEST_TARGET` is 10128 variable has no effect when :term:`TEST_TARGET` is
8084 set to "qemu". 10129 set to "qemu".
8085 10130
8086 When you specify the IP address, you can also include a port. Here is 10131 When you specify the IP address, you can also include a port. Here is
8087 an example: 10132 an example::
8088 ::
8089 10133
8090 TEST_TARGET_IP = "192.168.1.4:2201" 10134 TEST_TARGET_IP = "192.168.1.4:2201"
8091 10135
@@ -8097,7 +10141,7 @@ system and gives an overview of their function and contents.
8097 10141
8098 :term:`TESTIMAGE_AUTO` 10142 :term:`TESTIMAGE_AUTO`
8099 Automatically runs the series of automated tests for images when an 10143 Automatically runs the series of automated tests for images when an
8100 image is successfully built. Setting ``TESTIMAGE_AUTO`` to "1" causes 10144 image is successfully built. Setting :term:`TESTIMAGE_AUTO` to "1" causes
8101 any image that successfully builds to automatically boot under QEMU. 10145 any image that successfully builds to automatically boot under QEMU.
8102 Using the variable also adds in dependencies so that any SDK for 10146 Using the variable also adds in dependencies so that any SDK for
8103 which testing is requested is automatically built first. 10147 which testing is requested is automatically built first.
@@ -8113,9 +10157,20 @@ system and gives an overview of their function and contents.
8113 10157
8114 For more information 10158 For more information
8115 on enabling, running, and writing these tests, see the 10159 on enabling, running, and writing these tests, see the
8116 ":ref:`dev-manual/common-tasks:performing automated runtime testing`" 10160 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
8117 section in the Yocto Project Development Tasks Manual and the 10161 section in the Yocto Project Test Environment Manual and the
8118 ":ref:`testimage*.bbclass <ref-classes-testimage*>`" section. 10162 ":ref:`ref-classes-testimage`" section.
10163
10164 :term:`TESTIMAGE_FAILED_QA_ARTIFACTS`
10165 When using the :ref:`ref-classes-testimage` class, the variable
10166 :term:`TESTIMAGE_FAILED_QA_ARTIFACTS` lists space-separated paths on the
10167 target to retrieve onto the host.
10168
10169 :term:`TESTSDK_SUITES`
10170 When using the :ref:`ref-classes-testsdk` class, the
10171 :term:`TESTSDK_SUITES` variable can be used to control the list of test
10172 modules to run. The default value for this variable is an empty string
10173 and all test modules that can be found are run.
8119 10174
8120 :term:`THISDIR` 10175 :term:`THISDIR`
8121 The directory in which the file BitBake is currently parsing is 10176 The directory in which the file BitBake is currently parsing is
@@ -8129,24 +10184,38 @@ system and gives an overview of their function and contents.
8129 :term:`TMPDIR` 10184 :term:`TMPDIR`
8130 This variable is the base directory the OpenEmbedded build system 10185 This variable is the base directory the OpenEmbedded build system
8131 uses for all build output and intermediate files (other than the 10186 uses for all build output and intermediate files (other than the
8132 shared state cache). By default, the ``TMPDIR`` variable points to 10187 shared state cache). By default, the :term:`TMPDIR` variable points to
8133 ``tmp`` within the :term:`Build Directory`. 10188 ``tmp`` within the :term:`Build Directory`.
8134 10189
8135 If you want to establish this directory in a location other than the 10190 If you want to establish this directory in a location other than the
8136 default, you can uncomment and edit the following statement in the 10191 default, you can uncomment and edit the following statement in the
8137 ``conf/local.conf`` file in the :term:`Source Directory`: 10192 ``conf/local.conf`` file in the :term:`Source Directory`::
8138 ::
8139 10193
8140 #TMPDIR = "${TOPDIR}/tmp" 10194 #TMPDIR = "${TOPDIR}/tmp"
8141 10195
8142 An example use for this scenario is to set ``TMPDIR`` to a local disk, 10196 An example use for this scenario is to set :term:`TMPDIR` to a local disk,
8143 which does not use NFS, while having the Build Directory use NFS. 10197 which does not use NFS, while having the :term:`Build Directory` use NFS.
8144 10198
8145 The filesystem used by ``TMPDIR`` must have standard filesystem 10199 The filesystem used by :term:`TMPDIR` must have standard filesystem
8146 semantics (i.e. mixed-case files are unique, POSIX file locking, and 10200 semantics (i.e. mixed-case files are unique, POSIX file locking, and
8147 persistent inodes). Due to various issues with NFS and bugs in some 10201 persistent inodes). Due to various issues with NFS and bugs in some
8148 implementations, NFS does not meet this minimum requirement. 10202 implementations, NFS does not meet this minimum requirement.
8149 Consequently, ``TMPDIR`` cannot be on NFS. 10203 Consequently, :term:`TMPDIR` cannot be on NFS.
10204
10205 :term:`TOOLCHAIN`
10206 The :term:`TOOLCHAIN` variable can be used to override the toolchain used
10207 by a recipe.
10208
10209 The default value for this variable is the value of
10210 :term:`PREFERRED_TOOLCHAIN`. See the description of
10211 :term:`PREFERRED_TOOLCHAIN` to know the list of possible values for
10212 :term:`TOOLCHAIN`.
10213
10214 It is possible to override the value of this variable from a recipe if
10215 this recipe is known to support only a specific toolchain. For example,
10216 the :oe_git:`Pseudo </openembedded-core/tree/meta/recipes-devtools/pseudo/pseudo_git.bb>`
10217 recipe overrides this variable to "gcc", because Pseudo uses GCC compiler
10218 built-ins options that the Clang/LLVM compiler does not provide.
8150 10219
8151 :term:`TOOLCHAIN_HOST_TASK` 10220 :term:`TOOLCHAIN_HOST_TASK`
8152 This variable lists packages the OpenEmbedded build system uses when 10221 This variable lists packages the OpenEmbedded build system uses when
@@ -8154,8 +10223,7 @@ system and gives an overview of their function and contents.
8154 packages specified by this variable are part of the toolchain set 10223 packages specified by this variable are part of the toolchain set
8155 that runs on the :term:`SDKMACHINE`, and each 10224 that runs on the :term:`SDKMACHINE`, and each
8156 package should usually have the prefix ``nativesdk-``. For example, 10225 package should usually have the prefix ``nativesdk-``. For example,
8157 consider the following command when building an SDK: 10226 consider the following command when building an SDK::
8158 ::
8159 10227
8160 $ bitbake -c populate_sdk imagename 10228 $ bitbake -c populate_sdk imagename
8161 10229
@@ -8173,11 +10241,41 @@ system and gives an overview of their function and contents.
8173 information on setting up a cross-development environment, see the 10241 information on setting up a cross-development environment, see the
8174 :doc:`/sdk-manual/index` manual. 10242 :doc:`/sdk-manual/index` manual.
8175 10243
10244 Note that this variable applies to building an SDK, not an eSDK,
10245 in which case the :term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be
10246 used instead.
10247
10248 :term:`TOOLCHAIN_HOST_TASK_ESDK`
10249 This variable allows to extend what is installed in the host
10250 portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK`
10251 applying to SDKs.
10252
10253 :term:`TOOLCHAIN_NATIVE`
10254 The :term:`TOOLCHAIN_NATIVE` variable can be used to override the
10255 toolchain used by a :ref:`ref-classes-native` recipe.
10256
10257 The default value for this variable is the value of
10258 :term:`PREFERRED_TOOLCHAIN` (in :ref:`ref-classes-native` contexts). See
10259 the description of :term:`PREFERRED_TOOLCHAIN` to know the list of
10260 possible values for :term:`TOOLCHAIN_NATIVE`.
10261
10262 It is possible to override the value of this variable from a recipe if
10263 this recipe is known to support only a specific toolchain.
10264
10265 :term:`TOOLCHAIN_OPTIONS`
10266 This variable holds extra options passed to the compiler and the linker
10267 for non ``-native`` recipes as they have to point to their custom
10268 ``sysroot`` folder pointed to by :term:`RECIPE_SYSROOT`::
10269
10270 TOOLCHAIN_OPTIONS = " --sysroot=${RECIPE_SYSROOT}"
10271
10272 Native recipes don't need this variable to be set, as they are
10273 built for the host machine with the native compiler.
10274
8176 :term:`TOOLCHAIN_OUTPUTNAME` 10275 :term:`TOOLCHAIN_OUTPUTNAME`
8177 This variable defines the name used for the toolchain output. The 10276 This variable defines the name used for the toolchain output. The
8178 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets 10277 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets
8179 the ``TOOLCHAIN_OUTPUTNAME`` variable as follows: 10278 the :term:`TOOLCHAIN_OUTPUTNAME` variable as follows::
8180 ::
8181 10279
8182 TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}" 10280 TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
8183 10281
@@ -8204,16 +10302,14 @@ system and gives an overview of their function and contents.
8204 :doc:`/sdk-manual/index` manual. 10302 :doc:`/sdk-manual/index` manual.
8205 10303
8206 :term:`TOPDIR` 10304 :term:`TOPDIR`
8207 The top-level :term:`Build Directory`. BitBake 10305 See :term:`bitbake:TOPDIR` in the BitBake manual.
8208 automatically sets this variable when you initialize your build
8209 environment using :ref:`structure-core-script`.
8210 10306
8211 :term:`TRANSLATED_TARGET_ARCH` 10307 :term:`TRANSLATED_TARGET_ARCH`
8212 A sanitized version of :term:`TARGET_ARCH`. This 10308 A sanitized version of :term:`TARGET_ARCH`. This
8213 variable is used where the architecture is needed in a value where 10309 variable is used where the architecture is needed in a value where
8214 underscores are not allowed, for example within package filenames. In 10310 underscores are not allowed, for example within package filenames. In
8215 this case, dash characters replace any underscore characters used in 10311 this case, dash characters replace any underscore characters used in
8216 ``TARGET_ARCH``. 10312 :term:`TARGET_ARCH`.
8217 10313
8218 Do not edit this variable. 10314 Do not edit this variable.
8219 10315
@@ -8222,19 +10318,18 @@ system and gives an overview of their function and contents.
8222 ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses 10318 ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses
8223 this value to setup configuration. 10319 this value to setup configuration.
8224 10320
8225 ``TUNE_ARCH`` definitions are specific to a given architecture. The 10321 :term:`TUNE_ARCH` definitions are specific to a given architecture. The
8226 definitions can be a single static definition, or can be dynamically 10322 definitions can be a single static definition, or can be dynamically
8227 adjusted. You can see details for a given CPU family by looking at 10323 adjusted. You can see details for a given CPU family by looking at
8228 the architecture's ``README`` file. For example, the 10324 the architecture's ``README`` file. For example, the
8229 ``meta/conf/machine/include/mips/README`` file in the 10325 ``meta/conf/machine/include/mips/README`` file in the
8230 :term:`Source Directory` provides information for 10326 :term:`Source Directory` provides information for
8231 ``TUNE_ARCH`` specific to the ``mips`` architecture. 10327 :term:`TUNE_ARCH` specific to the ``mips`` architecture.
8232 10328
8233 ``TUNE_ARCH`` is tied closely to 10329 :term:`TUNE_ARCH` is tied closely to
8234 :term:`TARGET_ARCH`, which defines the target 10330 :term:`TARGET_ARCH`, which defines the target
8235 machine's architecture. The BitBake configuration file 10331 machine's architecture. The BitBake configuration file
8236 (``meta/conf/bitbake.conf``) sets ``TARGET_ARCH`` as follows: 10332 (``meta/conf/bitbake.conf``) sets :term:`TARGET_ARCH` as follows::
8237 ::
8238 10333
8239 TARGET_ARCH = "${TUNE_ARCH}" 10334 TARGET_ARCH = "${TUNE_ARCH}"
8240 10335
@@ -8252,12 +10347,11 @@ system and gives an overview of their function and contents.
8252 :term:`TUNE_ASARGS` 10347 :term:`TUNE_ASARGS`
8253 Specifies architecture-specific assembler flags for the target 10348 Specifies architecture-specific assembler flags for the target
8254 system. The set of flags is based on the selected tune features. 10349 system. The set of flags is based on the selected tune features.
8255 ``TUNE_ASARGS`` is set using the tune include files, which are 10350 :term:`TUNE_ASARGS` is set using the tune include files, which are
8256 typically under ``meta/conf/machine/include/`` and are influenced 10351 typically under ``meta/conf/machine/include/`` and are influenced
8257 through :term:`TUNE_FEATURES`. For example, the 10352 through :term:`TUNE_FEATURES`. For example, the
8258 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags 10353 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
8259 for the x86 architecture as follows: 10354 for the x86 architecture as follows::
8260 ::
8261 10355
8262 TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}" 10356 TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
8263 10357
@@ -8270,7 +10364,7 @@ system and gives an overview of their function and contents.
8270 :term:`TUNE_CCARGS` 10364 :term:`TUNE_CCARGS`
8271 Specifies architecture-specific C compiler flags for the target 10365 Specifies architecture-specific C compiler flags for the target
8272 system. The set of flags is based on the selected tune features. 10366 system. The set of flags is based on the selected tune features.
8273 ``TUNE_CCARGS`` is set using the tune include files, which are 10367 :term:`TUNE_CCARGS` is set using the tune include files, which are
8274 typically under ``meta/conf/machine/include/`` and are influenced 10368 typically under ``meta/conf/machine/include/`` and are influenced
8275 through :term:`TUNE_FEATURES`. 10369 through :term:`TUNE_FEATURES`.
8276 10370
@@ -8290,22 +10384,20 @@ system and gives an overview of their function and contents.
8290 are not conflicting and that they are supported. 10384 are not conflicting and that they are supported.
8291 10385
8292 The BitBake configuration file (``meta/conf/bitbake.conf``) defines 10386 The BitBake configuration file (``meta/conf/bitbake.conf``) defines
8293 ``TUNE_FEATURES`` as follows: 10387 :term:`TUNE_FEATURES` as follows::
8294 ::
8295 10388
8296 TUNE_FEATURES ??= "${TUNE_FEATURES_tune-${DEFAULTTUNE}}" 10389 TUNE_FEATURES ??= "${TUNE_FEATURES:tune-${DEFAULTTUNE}}"
8297 10390
8298 See the :term:`DEFAULTTUNE` variable for more information. 10391 See the :term:`DEFAULTTUNE` variable for more information.
8299 10392
8300 :term:`TUNE_LDARGS` 10393 :term:`TUNE_LDARGS`
8301 Specifies architecture-specific linker flags for the target system. 10394 Specifies architecture-specific linker flags for the target system.
8302 The set of flags is based on the selected tune features. 10395 The set of flags is based on the selected tune features.
8303 ``TUNE_LDARGS`` is set using the tune include files, which are 10396 :term:`TUNE_LDARGS` is set using the tune include files, which are
8304 typically under ``meta/conf/machine/include/`` and are influenced 10397 typically under ``meta/conf/machine/include/`` and are influenced
8305 through :term:`TUNE_FEATURES`. For example, the 10398 through :term:`TUNE_FEATURES`. For example, the
8306 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags 10399 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags
8307 for the x86 architecture as follows: 10400 for the x86 architecture as follows::
8308 ::
8309 10401
8310 TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}" 10402 TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
8311 10403
@@ -8318,51 +10410,15 @@ system and gives an overview of their function and contents.
8318 :term:`TUNE_PKGARCH` 10410 :term:`TUNE_PKGARCH`
8319 The package architecture understood by the packaging system to define 10411 The package architecture understood by the packaging system to define
8320 the architecture, ABI, and tuning of output packages. The specific 10412 the architecture, ABI, and tuning of output packages. The specific
8321 tune is defined using the "_tune" override as follows: 10413 tune is defined using the "_tune" override as follows::
8322 ::
8323 10414
8324 TUNE_PKGARCH_tune-tune = "tune" 10415 TUNE_PKGARCH:tune-tune = "tune"
8325 10416
8326 These tune-specific package architectures are defined in the machine 10417 These tune-specific package architectures are defined in the machine
8327 include files. Here is an example of the "core2-32" tuning as used in 10418 include files. Here is an example of the "core2-32" tuning as used in
8328 the ``meta/conf/machine/include/tune-core2.inc`` file: 10419 the ``meta/conf/machine/include/x86/tune-core2.inc`` file::
8329 ::
8330
8331 TUNE_PKGARCH_tune-core2-32 = "core2-32"
8332
8333 :term:`TUNEABI`
8334 An underlying Application Binary Interface (ABI) used by a particular
8335 tuning in a given toolchain layer. Providers that use prebuilt
8336 libraries can use the ``TUNEABI``,
8337 :term:`TUNEABI_OVERRIDE`, and
8338 :term:`TUNEABI_WHITELIST` variables to check
8339 compatibility of tunings against their selection of libraries.
8340
8341 If ``TUNEABI`` is undefined, then every tuning is allowed. See the
8342 :ref:`sanity <ref-classes-sanity>` class to see how the variable is
8343 used.
8344
8345 :term:`TUNEABI_OVERRIDE`
8346 If set, the OpenEmbedded system ignores the
8347 :term:`TUNEABI_WHITELIST` variable.
8348 Providers that use prebuilt libraries can use the
8349 ``TUNEABI_OVERRIDE``, ``TUNEABI_WHITELIST``, and
8350 :term:`TUNEABI` variables to check compatibility of a
8351 tuning against their selection of libraries.
8352
8353 See the :ref:`sanity <ref-classes-sanity>` class to see how the
8354 variable is used.
8355 10420
8356 :term:`TUNEABI_WHITELIST` 10421 TUNE_PKGARCH:tune-core2-32 = "core2-32"
8357 A whitelist of permissible :term:`TUNEABI` values. If
8358 ``TUNEABI_WHITELIST`` is not set, all tunes are allowed. Providers
8359 that use prebuilt libraries can use the ``TUNEABI_WHITELIST``,
8360 :term:`TUNEABI_OVERRIDE`, and ``TUNEABI``
8361 variables to check compatibility of a tuning against their selection
8362 of libraries.
8363
8364 See the :ref:`sanity <ref-classes-sanity>` class to see how the
8365 variable is used.
8366 10422
8367 :term:`TUNECONFLICTS[feature]` 10423 :term:`TUNECONFLICTS[feature]`
8368 Specifies CPU or Application Binary Interface (ABI) tuning features 10424 Specifies CPU or Application Binary Interface (ABI) tuning features
@@ -8372,8 +10428,7 @@ system and gives an overview of their function and contents.
8372 the :term:`Source Directory`. Here is an example from 10428 the :term:`Source Directory`. Here is an example from
8373 the ``meta/conf/machine/include/mips/arch-mips.inc`` include file 10429 the ``meta/conf/machine/include/mips/arch-mips.inc`` include file
8374 that lists the "o32" and "n64" features as conflicting with the "n32" 10430 that lists the "o32" and "n64" features as conflicting with the "n32"
8375 feature: 10431 feature::
8376 ::
8377 10432
8378 TUNECONFLICTS[n32] = "o32 n64" 10433 TUNECONFLICTS[n32] = "o32 n64"
8379 10434
@@ -8382,65 +10437,349 @@ system and gives an overview of their function and contents.
8382 feature. The specified feature is stored as a flag. Valid features 10437 feature. The specified feature is stored as a flag. Valid features
8383 are specified in the machine include files (e.g. 10438 are specified in the machine include files (e.g.
8384 ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example 10439 ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example
8385 from that file: 10440 from that file::
8386 ::
8387 10441
8388 TUNEVALID[bigendian] = "Enable big-endian mode." 10442 TUNEVALID[bigendian] = "Enable big-endian mode."
8389 10443
8390 See the machine include files in the :term:`Source Directory` 10444 See the machine include files in the :term:`Source Directory`
8391 for these features. 10445 for these features.
8392 10446
8393 :term:`UBOOT_CONFIG` 10447 :term:`UBOOT_BINARY`
8394 Configures the :term:`UBOOT_MACHINE` and can 10448 Specifies the name of the binary build by U-Boot.
8395 also define :term:`IMAGE_FSTYPES` for individual
8396 cases.
8397 10449
8398 Following is an example from the ``meta-fsl-arm`` layer. :: 10450 :term:`UBOOT_CONFIG`
8399 10451 Configures one or more U-Boot configurations to build. Each
8400 UBOOT_CONFIG ??= "sd" 10452 configuration can define the :term:`UBOOT_MACHINE` and optionally the
8401 UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard" 10453 :term:`IMAGE_FSTYPES` and the :term:`UBOOT_BINARY`.
8402 UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config" 10454
8403 UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs" 10455 Here is an example from the ``meta-freescale`` layer. ::
8404 UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config" 10456
8405 10457 UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor"
8406 In this example, "sd" is selected as the configuration of the possible four for the 10458 UBOOT_CONFIG[nor] = "ls1021atwr_nor_defconfig"
8407 ``UBOOT_MACHINE``. The "sd" configuration defines 10459 UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig,,u-boot-with-spl-pbl.bin"
8408 "mx6qsabreauto_config" as the value for ``UBOOT_MACHINE``, while the 10460 UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig,,u-boot-with-spl-pbl.bin"
8409 "sdcard" specifies the ``IMAGE_FSTYPES`` to use for the U-Boot image. 10461 UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_defconfig"
8410 10462 UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_defconfig"
8411 For more information on how the ``UBOOT_CONFIG`` is handled, see the 10463 UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_defconfig"
8412 :ref:`uboot-config <ref-classes-uboot-config>` 10464 UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
8413 class. 10465
10466 In this example, all possible seven configurations are selected. Each
10467 configuration specifies "..._defconfig" as :term:`UBOOT_MACHINE`, and
10468 the "sd..." configurations define an individual name for
10469 :term:`UBOOT_BINARY`. No configuration defines a second parameter for
10470 :term:`IMAGE_FSTYPES` to use for the U-Boot image.
10471
10472 For more information on how the :term:`UBOOT_CONFIG` is handled, see the
10473 :ref:`ref-classes-uboot-config` class.
8414 10474
8415 :term:`UBOOT_DTB_LOADADDRESS` 10475 :term:`UBOOT_DTB_LOADADDRESS`
8416 Specifies the load address for the dtb image used by U-Boot. During FIT 10476 Specifies the load address for the dtb image used by U-Boot. During FIT
8417 image creation, the ``UBOOT_DTB_LOADADDRESS`` variable is used in 10477 image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in
8418 :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify 10478 :ref:`ref-classes-kernel-fit-image` class to specify the load address to be
8419 the load address to be used in 10479 used in creating the dtb sections of Image Tree Source for the FIT image.
8420 creating the dtb sections of Image Tree Source for the FIT image.
8421 10480
8422 :term:`UBOOT_DTBO_LOADADDRESS` 10481 :term:`UBOOT_DTBO_LOADADDRESS`
8423 Specifies the load address for the dtbo image used by U-Boot. During FIT 10482 Specifies the load address for the dtbo image used by U-Boot. During FIT
8424 image creation, the ``UBOOT_DTBO_LOADADDRESS`` variable is used in 10483 image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in
8425 :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the load address to be used in 10484 :ref:`ref-classes-kernel-fit-image` class to specify the load address to be
8426 creating the dtbo sections of Image Tree Source for the FIT image. 10485 used in creating the dtbo sections of Image Tree Source for the FIT image.
8427 10486
8428 :term:`UBOOT_ENTRYPOINT` 10487 :term:`UBOOT_ENTRYPOINT`
8429 Specifies the entry point for the U-Boot image. During U-Boot image 10488 Specifies the entry point for the U-Boot image. During U-Boot image
8430 creation, the ``UBOOT_ENTRYPOINT`` variable is passed as a 10489 creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a
8431 command-line parameter to the ``uboot-mkimage`` utility. 10490 command-line parameter to the ``uboot-mkimage`` utility.
8432 10491
10492 To pass a 64 bit address for FIT image creation, you will need to set:
10493 - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
10494 - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
10495
10496 This variable is used by the :ref:`ref-classes-kernel-fit-image`,
10497 :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
10498 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
10499 classes.
10500
10501 :term:`UBOOT_ENV`
10502 This variable allows to add additional environment variables or a script
10503 to be installed together with U-Boot.
10504 This file, typically ``uEnv.txt`` or ``boot.cmd``, is installed in
10505 ``/boot`` as well as copied to the :term:`DEPLOYDIR` directory.
10506
10507 For machine configurations needing one of these files a ``.bbappend``
10508 file should include it in the :term:`SRC_URI` of the U-Boot recipe.
10509
10510 If the variable :term:`UBOOT_ENV_SUFFIX` is set to ``scr`` the script is
10511 packaged as a uImage (``mkimage -T script..``) otherwise it gets
10512 installed verbatim.
10513
10514 Some examples:
10515
10516 - Adding a script ``boot.cmd`` as a uImage to ``/boot``::
10517
10518 UBOOT_ENV = "boot"
10519 UBOOT_ENV_SUFFIX = "scr"
10520 SRC_URI += "file://${UBOOT_ENV_SRC}"
10521
10522 - Adding a script ``uEnv.txt`` as a plain text file to ``/boot``::
10523
10524 UBOOT_ENV = "uEnv"
10525 UBOOT_ENV_SUFFIX = "txt"
10526 SRC_URI += "file://${UBOOT_ENV_BINARY}"
10527
10528 :term:`UBOOT_ENV_SRC_SUFFIX`
10529 If :term:`UBOOT_ENV_SUFFIX` is set to ``scr`` this is the suffix of the
10530 plain text script file as it is specified in the :term:`SRC_URI` of the
10531 U-Boot recipe. It defaults to ``cmd``.
10532
10533 :term:`UBOOT_ENV_SUFFIX`
10534 If this variable is set to ``scr`` the script referred to by
10535 :term:`UBOOT_ENV` gets packaged as a uImage before it gets installed.
10536 The default is ``txt`` which means the script is installed as-is, with
10537 no modification.
10538
10539 :term:`UBOOT_FIT_ADDRESS_CELLS`
10540 Specifies the value of the ``#address-cells`` value for the
10541 description of the U-Boot FIT image.
10542
10543 The default value is set to "1" by the :ref:`ref-classes-uboot-sign`
10544 class, which corresponds to 32 bit addresses.
10545
10546 For platforms that need to set 64 bit addresses in
10547 :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
10548 set this value to "2", as two 32 bit values (cells) will be needed
10549 to represent such addresses.
10550
10551 Here is an example setting "0x400000000" as a load address::
10552
10553 UBOOT_FIT_ADDRESS_CELLS = "2"
10554 UBOOT_LOADADDRESS = "0x04 0x00000000"
10555
10556 See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
10557
10558 :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE`
10559 `Trusted Firmware-A (TF-A) <https://www.trustedfirmware.org/projects/tf-a>`__
10560 is a reference implementation of secure world software for Arm A-Profile
10561 architectures (Armv8-A and Armv7-A), including an Exception Level 3 (EL3)
10562 Secure Monitor. This variable enables the generation of a U-Boot FIT
10563 image with a Trusted Firmware-A (TF-A) binary.
10564
10565 Its default value is "0", so set it to "1" to enable this functionality::
10566
10567 UBOOT_FIT_ARM_TRUSTED_FIRMWARE = "1"
10568
10569 :term:`UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE`
10570 Specifies the path to the Trusted Firmware-A (TF-A) binary. Its default
10571 value is "bl31.bin"::
10572
10573 UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "bl31.bin"
10574
10575 If a relative path is provided, the file is expected to be relative to
10576 U-Boot's :term:`B` directory. An absolute path can be provided too,
10577 e.g.::
10578
10579 UBOOT_FIT_ARM_TRUSTED_FIRMWARE_IMAGE ?= "${DEPLOY_DIR_IMAGE}/bl31.bin"
10580
10581 If the Trusted Firmware-A (TF-A) binary is built in a separate recipe,
10582 you must add the necessary dependency in a U-Boot ``.bbappend`` file. The
10583 recipe name for Trusted Firmware-A (TF-A) binary is
10584 ``trusted-firmware-a``, which comes from the
10585 :yocto_git:`meta-arm </meta-arm>` layer::
10586
10587 do_compile[depends] += "trusted-firmware-a:do_deploy"
10588
10589 :term:`UBOOT_FIT_CONF_FIRMWARE`
10590 Adds one image to the ``firmware`` property of the configuration node of
10591 the U-Boot Image Tree Source (ITS). Sets the ``firmware`` property to
10592 select the image to boot first::
10593
10594 UBOOT_FIT_CONF_FIRMWARE = "fwa"
10595
10596 If not set, the first entry in "loadables" is used to boot instead.
10597
10598 :term:`UBOOT_FIT_CONF_USER_LOADABLES`
10599 Adds one or more user-defined images to the ``loadables`` property of the
10600 configuration node of the U-Boot Image Tree Source (ITS). This variable
10601 is handled by the local shell in the recipe so appropriate escaping
10602 should be done, e.g. escaping quotes.::
10603
10604 UBOOT_FIT_CONF_USER_LOADABLES = '\"fwa\", \"fwb\"'
10605
10606 :term:`UBOOT_FIT_DESC`
10607 Specifies the description string encoded into a U-Boot fitImage. The default
10608 value is set by the :ref:`ref-classes-uboot-sign` class as follows::
10609
10610 UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
10611
10612 :term:`UBOOT_FIT_GENERATE_KEYS`
10613 Decides whether to generate the keys for signing the U-Boot fitImage if
10614 they don't already exist. The keys are created in :term:`SPL_SIGN_KEYDIR`.
10615 The default value is "0".
10616
10617 Enable this as follows::
10618
10619 UBOOT_FIT_GENERATE_KEYS = "1"
10620
10621 This variable is used in the :ref:`ref-classes-uboot-sign` class.
10622
10623 :term:`UBOOT_FIT_HASH_ALG`
10624 Specifies the hash algorithm used in creating the U-Boot FIT Image.
10625 It is set by default to ``sha256`` by the :ref:`ref-classes-uboot-sign`
10626 class.
10627
10628 :term:`UBOOT_FIT_KEY_GENRSA_ARGS`
10629 Arguments to ``openssl genrsa`` for generating a RSA private key for
10630 signing the U-Boot FIT image. The default value of this variable
10631 is set to "-F4" by the :ref:`ref-classes-uboot-sign` class.
10632
10633 :term:`UBOOT_FIT_KEY_REQ_ARGS`
10634 Arguments to ``openssl req`` for generating a certificate for signing
10635 the U-Boot FIT image. The default value is "-batch -new" by the
10636 :ref:`ref-classes-uboot-sign` class, "batch" for
10637 non interactive mode and "new" for generating new keys.
10638
10639 :term:`UBOOT_FIT_KEY_SIGN_PKCS`
10640 Format for the public key certificate used for signing the U-Boot FIT
10641 image. The default value is set to "x509" by the
10642 :ref:`ref-classes-uboot-sign` class.
10643
10644 :term:`UBOOT_FIT_SIGN_ALG`
10645 Specifies the signature algorithm used in creating the U-Boot FIT Image.
10646 This variable is set by default to "rsa2048" by the
10647 :ref:`ref-classes-uboot-sign` class.
10648
10649 :term:`UBOOT_FIT_SIGN_NUMBITS`
10650 Size of the private key used in signing the U-Boot FIT image, in number
10651 of bits. The default value for this variable is set to "2048"
10652 by the :ref:`ref-classes-uboot-sign` class.
10653
10654 :term:`UBOOT_FIT_TEE`
10655 A Trusted Execution Environment (TEE) is a secure environment for
10656 executing code, ensuring high levels of trust in asset management within
10657 the surrounding system. This variable enables the generation of a U-Boot
10658 FIT image with a Trusted Execution Environment (TEE) binary.
10659
10660 Its default value is "0", so set it to "1" to enable this functionality::
10661
10662 UBOOT_FIT_TEE = "1"
10663
10664 :term:`UBOOT_FIT_TEE_IMAGE`
10665 Specifies the path to the Trusted Execution Environment (TEE) binary. Its
10666 default value is "tee-raw.bin"::
10667
10668 UBOOT_FIT_TEE_IMAGE ?= "tee-raw.bin"
10669
10670 If a relative path is provided, the file is expected to be relative to
10671 U-Boot's :term:`B` directory. An absolute path can be provided too,
10672 e.g.::
10673
10674 UBOOT_FIT_TEE_IMAGE ?= "${DEPLOY_DIR_IMAGE}/tee-raw.bin"
10675
10676 If the Trusted Execution Environment (TEE) binary is built in a separate
10677 recipe, you must add the necessary dependency in a U-Boot ``.bbappend``
10678 file. The recipe name for Trusted Execution Environment (TEE) binary is
10679 ``optee-os``, which comes from the :yocto_git:`meta-arm </meta-arm>`
10680 layer::
10681
10682 do_compile[depends] += "optee-os:do_deploy"
10683
10684 :term:`UBOOT_FIT_USER_SETTINGS`
10685 Add a user-specific snippet to the U-Boot Image Tree Source (ITS). This
10686 variable allows the user to add one or more user-defined ``/images`` node
10687 to the U-Boot Image Tree Source (ITS). For more details, please refer to
10688 https://fitspec.osfw.foundation/\ .
10689
10690 The original content of the U-Boot Image Tree Source (ITS) is as
10691 follows::
10692
10693 images {
10694 uboot {
10695 description = "U-Boot image";
10696 data = /incbin/("u-boot-nodtb.bin");
10697 type = "standalone";
10698 os = "u-boot";
10699 arch = "";
10700 compression = "none";
10701 load = <0x80000000>;
10702 entry = <0x80000000>;
10703 };
10704 };
10705
10706 Users can include their custom ITS snippet in this variable, e.g.::
10707
10708 UBOOT_FIT_FWA_ITS = '\
10709 fwa {\n\
10710 description = \"FW A\";\n\
10711 data = /incbin/(\"fwa.bin\");\n\
10712 type = \"firmware\";\n\
10713 arch = \"\";\n\
10714 os = \"\";\n\
10715 load = <0xb2000000>;\n\
10716 entry = <0xb2000000>;\n\
10717 compression = \"none\";\n\
10718 };\n\
10719 '
10720
10721 UBOOT_FIT_USER_SETTINGS = "${UBOOT_FIT_FWA_ITS}"
10722
10723 This variable is handled by the local shell in the recipe so appropriate
10724 escaping should be done, e.g. escaping quotes and adding newlines with
10725 ``\n``.
10726
10727 The generated content of the U-Boot Image Tree Source (ITS) is as
10728 follows::
10729
10730 images {
10731 uboot {
10732 description = "U-Boot image";
10733 data = /incbin/("u-boot-nodtb.bin");
10734 type = "standalone";
10735 os = "u-boot";
10736 arch = "";
10737 compression = "none";
10738 load = <0x80000000>;
10739 entry = <0x80000000>;
10740 };
10741 fwa {
10742 description = "FW A";
10743 data = /incbin/("fwa.bin");
10744 type = "firmware";
10745 arch = "";
10746 os = "";
10747 load = <0xb2000000>;
10748 entry = <0xb2000000>;
10749 compression = "none";
10750 };
10751 };
10752
10753 :term:`UBOOT_FITIMAGE_ENABLE`
10754 This variable allows to generate a FIT image for U-Boot, which is one
10755 of the ways to implement a verified boot process.
10756
10757 Its default value is "0", so set it to "1" to enable this functionality::
10758
10759 UBOOT_FITIMAGE_ENABLE = "1"
10760
10761 See the :ref:`ref-classes-uboot-sign` class for details.
10762
8433 :term:`UBOOT_LOADADDRESS` 10763 :term:`UBOOT_LOADADDRESS`
8434 Specifies the load address for the U-Boot image. During U-Boot image 10764 Specifies the load address for the U-Boot image. During U-Boot image
8435 creation, the ``UBOOT_LOADADDRESS`` variable is passed as a 10765 creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a
8436 command-line parameter to the ``uboot-mkimage`` utility. 10766 command-line parameter to the ``uboot-mkimage`` utility.
8437 10767
10768 To pass a 64 bit address, you will also need to set:
10769
10770 - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
10771 - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
10772
10773 This variable is used by the :ref:`ref-classes-kernel-fit-image`,
10774 :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
10775 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
10776 classes.
10777
8438 :term:`UBOOT_LOCALVERSION` 10778 :term:`UBOOT_LOCALVERSION`
8439 Appends a string to the name of the local version of the U-Boot 10779 Appends a string to the name of the local version of the U-Boot
8440 image. For example, assuming the version of the U-Boot image built 10780 image. For example, assuming the version of the U-Boot image built
8441 was "2013.10", the full version string reported by U-Boot would be 10781 was "2013.10", the full version string reported by U-Boot would be
8442 "2013.10-yocto" given the following statement: 10782 "2013.10-yocto" given the following statement::
8443 ::
8444 10783
8445 UBOOT_LOCALVERSION = "-yocto" 10784 UBOOT_LOCALVERSION = "-yocto"
8446 10785
@@ -8459,56 +10798,65 @@ system and gives an overview of their function and contents.
8459 10798
8460 :term:`UBOOT_MKIMAGE` 10799 :term:`UBOOT_MKIMAGE`
8461 Specifies the name of the mkimage command as used by the 10800 Specifies the name of the mkimage command as used by the
8462 :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to assemble 10801 :ref:`ref-classes-kernel-fit-image` class to assemble
8463 the FIT image. This can be used to substitute an alternative command, wrapper 10802 the FIT image. This can be used to substitute an alternative command, wrapper
8464 script or function if desired. The default is "uboot-mkimage". 10803 script or function if desired. The default is "uboot-mkimage".
8465 10804
8466 :term:`UBOOT_MKIMAGE_DTCOPTS` 10805 :term:`UBOOT_MKIMAGE_DTCOPTS`
8467 Options for the device tree compiler passed to mkimage '-D' 10806 Options for the device tree compiler passed to ``mkimage -D`` feature
8468 feature while creating FIT image in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class. 10807 while creating a FIT image with the :ref:`ref-classes-kernel-fit-image`
8469 If ``UBOOT_MKIMAGE_DTCOPTS`` is not set then kernel-fitimage will not 10808 class. If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then the
8470 pass the ``-D`` option to mkimage. 10809 :ref:`ref-classes-kernel-fit-image` class will not pass the ``-D`` option
10810 to ``mkimage``.
10811
10812 This variable is also used by the :ref:`ref-classes-uboot-sign` class.
10813
10814 :term:`UBOOT_MKIMAGE_KERNEL_TYPE`
10815 Specifies the type argument for the kernel as passed to ``uboot-mkimage``.
10816 The default value is "kernel".
8471 10817
8472 :term:`UBOOT_MKIMAGE_SIGN` 10818 :term:`UBOOT_MKIMAGE_SIGN`
8473 Specifies the name of the mkimage command as used by the 10819 Specifies the name of the mkimage command as used by the
8474 :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to sign 10820 :ref:`ref-classes-kernel-fit-image` class to sign
8475 the FIT image after it has been assembled (if enabled). This can be used 10821 the FIT image after it has been assembled (if enabled). This can be used
8476 to substitute an alternative command, wrapper script or function if 10822 to substitute an alternative command, wrapper script or function if
8477 desired. The default is "${:term:`UBOOT_MKIMAGE`}". 10823 desired. The default is "${:term:`UBOOT_MKIMAGE`}".
8478 10824
8479 :term:`UBOOT_MKIMAGE_SIGN_ARGS` 10825 :term:`UBOOT_MKIMAGE_SIGN_ARGS`
8480 Optionally specifies additional arguments for the 10826 Optionally specifies additional arguments for the
8481 :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to pass to the 10827 :ref:`ref-classes-kernel-fit-image` class to pass to the
8482 mkimage command when signing the FIT image. 10828 mkimage command when signing the FIT image.
8483 10829
8484 :term:`UBOOT_RD_ENTRYPOINT` 10830 :term:`UBOOT_RD_ENTRYPOINT`
8485 Specifies the entrypoint for the RAM disk image. 10831 Specifies the entrypoint for the RAM disk image. During FIT image
8486 During FIT image creation, the 10832 creation, the :term:`UBOOT_RD_ENTRYPOINT` variable is used in
8487 ``UBOOT_RD_ENTRYPOINT`` variable is used 10833 :ref:`ref-classes-kernel-fit-image` class to specify the entrypoint to be
8488 in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the 10834 used in creating the Image Tree Source for the FIT image.
8489 entrypoint to be used in creating the Image Tree Source for
8490 the FIT image.
8491 10835
8492 :term:`UBOOT_RD_LOADADDRESS` 10836 :term:`UBOOT_RD_LOADADDRESS`
8493 Specifies the load address for the RAM disk image. 10837 Specifies the load address for the RAM disk image. During FIT image
8494 During FIT image creation, the 10838 creation, the :term:`UBOOT_RD_LOADADDRESS` variable is used in
8495 ``UBOOT_RD_LOADADDRESS`` variable is used 10839 :ref:`ref-classes-kernel-fit-image` class to specify the load address to
8496 in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the 10840 be used in creating the Image Tree Source for the FIT image.
8497 load address to be used in creating the Image Tree Source for
8498 the FIT image.
8499 10841
8500 :term:`UBOOT_SIGN_ENABLE` 10842 :term:`UBOOT_SIGN_ENABLE`
8501 Enable signing of FIT image. The default value is "0". 10843 Enable signing of FIT image. The default value is "0".
8502 10844
10845 This variable is used by the :ref:`ref-classes-kernel-fit-image`,
10846 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
10847 classes.
10848
8503 :term:`UBOOT_SIGN_KEYDIR` 10849 :term:`UBOOT_SIGN_KEYDIR`
8504 Location of the directory containing the RSA key and 10850 Location of the directory containing the RSA key and certificate used for
8505 certificate used for signing FIT image. 10851 signing FIT image, used by the :ref:`ref-classes-kernel-fit-image` and
10852 :ref:`ref-classes-uboot-sign` classes.
8506 10853
8507 :term:`UBOOT_SIGN_KEYNAME` 10854 :term:`UBOOT_SIGN_KEYNAME`
8508 The name of keys used for signing U-Boot FIT image stored in 10855 The name of keys used by the :ref:`ref-classes-kernel-fit-image` class
8509 :term:`UBOOT_SIGN_KEYDIR` directory. For e.g. dev.key key and dev.crt 10856 for signing U-Boot FIT image stored in the :term:`UBOOT_SIGN_KEYDIR`
8510 certificate stored in :term:`UBOOT_SIGN_KEYDIR` directory will have 10857 directory. If we have for example a ``dev.key`` key and a ``dev.crt``
8511 :term:`UBOOT_SIGN_KEYNAME` set to "dev". 10858 certificate stored in the :term:`UBOOT_SIGN_KEYDIR` directory, you will
10859 have to set :term:`UBOOT_SIGN_KEYNAME` to ``dev``.
8512 10860
8513 :term:`UBOOT_SUFFIX` 10861 :term:`UBOOT_SUFFIX`
8514 Points to the generated U-Boot extension. For example, ``u-boot.sb`` 10862 Points to the generated U-Boot extension. For example, ``u-boot.sb``
@@ -8523,104 +10871,177 @@ system and gives an overview of their function and contents.
8523 passes and uses "all" for the target during the U-Boot building 10871 passes and uses "all" for the target during the U-Boot building
8524 process. 10872 process.
8525 10873
8526 :term:`UNKNOWN_CONFIGURE_WHITELIST` 10874 :term:`UBOOT_VERSION`
10875 When naming the files that are installed and deployed, the package version
10876 (:term:`PV`) and revision (:term:`PR`) are part of the filename. The
10877 :term:`UBOOT_VERSION` variable contains this information, but can be
10878 overridden if desired.
10879
10880 :term:`UKI_CMDLINE`
10881 When inheriting the :ref:`ref-classes-uki` class, the kernel command line
10882 to use when booting the `Unified Kernel Image (UKI)
10883 <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10884 Defaults to ``rootwait root=LABEL=root console=${KERNEL_CONSOLE}``.
10885
10886 :term:`UKI_CONFIG_FILE`
10887 When inheriting the :ref:`ref-classes-uki` class, an optional config
10888 file for the `ukify
10889 <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__
10890 command.
10891
10892 :term:`UKI_FILENAME`
10893 When inheriting the :ref:`ref-classes-uki` class, the output file name
10894 for the generated `Unified Kernel Image (UKI)
10895 <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10896 Defaults to ``uki.efi``.
10897
10898 :term:`UKI_KERNEL_FILENAME`
10899 When inheriting the :ref:`ref-classes-uki` class, the kernel image file
10900 name to use as input. Defaults to :term:`KERNEL_IMAGETYPE`.
10901
10902 :term:`UKI_SB_CERT`
10903 When inheriting the :ref:`ref-classes-uki` class, optional UEFI
10904 secureboot certificate matching the private key in :term:`UKI_SB_KEY`.
10905
10906 :term:`UKI_SB_KEY`
10907 When inheriting the :ref:`ref-classes-uki` class, optional UEFI
10908 secureboot private key to sign the `Unified Kernel Image (UKI)
10909 <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10910
10911 :term:`UKIFY_CMD`
10912 When inheriting the :ref:`ref-classes-uki` class,
10913 `ukify <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__ command to build
10914 `Unified Kernel Image (UKI) <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__.
10915 Defaults to ``ukify build``.
10916
10917 :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`
8527 Specifies a list of options that, if reported by the configure script 10918 Specifies a list of options that, if reported by the configure script
8528 as being invalid, should not generate a warning during the 10919 as being invalid, should not generate a warning during the
8529 :ref:`ref-tasks-configure` task. Normally, invalid 10920 :ref:`ref-tasks-configure` task. Normally, invalid
8530 configure options are simply not passed to the configure script (e.g. 10921 configure options are simply not passed to the configure script (e.g.
8531 should be removed from :term:`EXTRA_OECONF` or 10922 should be removed from :term:`EXTRA_OECONF` or
8532 :term:`PACKAGECONFIG_CONFARGS`). 10923 :term:`PACKAGECONFIG_CONFARGS`).
8533 However, common options, for example, exist that are passed to all 10924 However, there are common options that are passed to all
8534 configure scripts at a class level that might not be valid for some 10925 configure scripts at a class level, but might not be valid for some
8535 configure scripts. It follows that no benefit exists in seeing a 10926 configure scripts. Therefore warnings about these options are useless.
8536 warning about these options. For these cases, the options are added 10927 For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`.
8537 to ``UNKNOWN_CONFIGURE_WHITELIST``.
8538 10928
8539 The configure arguments check that uses 10929 The configure arguments check that uses
8540 ``UNKNOWN_CONFIGURE_WHITELIST`` is part of the 10930 :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` is part of the
8541 :ref:`insane <ref-classes-insane>` class and is only enabled if the 10931 :ref:`ref-classes-insane` class and is only enabled if the
8542 recipe inherits the :ref:`autotools <ref-classes-autotools>` class. 10932 recipe inherits the :ref:`ref-classes-autotools` class.
10933
10934 :term:`UNPACKDIR`
10935 This variable, used by the :ref:`ref-classes-base` class,
10936 specifies where fetches sources should be unpacked by the
10937 :ref:`ref-tasks-unpack` task.
8543 10938
8544 :term:`UPDATERCPN` 10939 :term:`UPDATERCPN`
8545 For recipes inheriting the 10940 For recipes inheriting the
8546 :ref:`update-rc.d <ref-classes-update-rc.d>` class, ``UPDATERCPN`` 10941 :ref:`ref-classes-update-rc.d` class, :term:`UPDATERCPN`
8547 specifies the package that contains the initscript that is enabled. 10942 specifies the package that contains the initscript that is enabled.
8548 10943
8549 The default value is "${PN}". Given that almost all recipes that 10944 The default value is "${PN}". Given that almost all recipes that
8550 install initscripts package them in the main package for the recipe, 10945 install initscripts package them in the main package for the recipe,
8551 you rarely need to set this variable in individual recipes. 10946 you rarely need to set this variable in individual recipes.
8552 10947
10948 :term:`UPSTREAM_CHECK_COMMITS`
10949 You can perform a per-recipe check for what the latest upstream
10950 source code version is by calling ``devtool latest-version recipe``. If
10951 the recipe source code is provided from Git repositories, but
10952 releases are not identified by Git tags, set :term:`UPSTREAM_CHECK_COMMITS`
10953 to ``1`` in the recipe, and the OpenEmbedded build system
10954 will compare the latest commit with the one currently specified
10955 by the recipe (:term:`SRCREV`)::
10956
10957 UPSTREAM_CHECK_COMMITS = "1"
10958
8553 :term:`UPSTREAM_CHECK_GITTAGREGEX` 10959 :term:`UPSTREAM_CHECK_GITTAGREGEX`
8554 You can perform a per-recipe check for what the latest upstream 10960 You can perform a per-recipe check for what the latest upstream
8555 source code version is by calling ``bitbake -c checkpkg`` recipe. If 10961 source code version is by calling ``devtool latest-version recipe``. If
8556 the recipe source code is provided from Git repositories, the 10962 the recipe source code is provided from Git repositories, the
8557 OpenEmbedded build system determines the latest upstream version by 10963 OpenEmbedded build system determines the latest upstream version by
8558 picking the latest tag from the list of all repository tags. 10964 picking the latest tag from the list of all repository tags.
8559 10965
8560 You can use the ``UPSTREAM_CHECK_GITTAGREGEX`` variable to provide a 10966 You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a
8561 regular expression to filter only the relevant tags should the 10967 regular expression to filter only the relevant tags should the
8562 default filter not work correctly. 10968 default filter not work correctly::
8563 ::
8564 10969
8565 UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex" 10970 UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
8566 10971
8567 :term:`UPSTREAM_CHECK_REGEX` 10972 :term:`UPSTREAM_CHECK_REGEX`
8568 Use the ``UPSTREAM_CHECK_REGEX`` variable to specify a different 10973 Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different
8569 regular expression instead of the default one when the package 10974 regular expression instead of the default one when the package
8570 checking system is parsing the page found using 10975 checking system is parsing the page found using
8571 :term:`UPSTREAM_CHECK_URI`. 10976 :term:`UPSTREAM_CHECK_URI`::
8572 ::
8573 10977
8574 UPSTREAM_CHECK_REGEX = "package_regex" 10978 UPSTREAM_CHECK_REGEX = "package_regex"
8575 10979
8576 :term:`UPSTREAM_CHECK_URI` 10980 :term:`UPSTREAM_CHECK_URI`
8577 You can perform a per-recipe check for what the latest upstream 10981 You can perform a per-recipe check for what the latest upstream
8578 source code version is by calling ``bitbake -c checkpkg`` recipe. If 10982 source code version is by calling ``devtool latest-version recipe``. If
8579 the source code is provided from tarballs, the latest version is 10983 the source code is provided from tarballs, the latest version is
8580 determined by fetching the directory listing where the tarball is and 10984 determined by fetching the directory listing where the tarball is and
8581 attempting to find a later tarball. When this approach does not work, 10985 attempting to find a later tarball. When this approach does not work,
8582 you can use ``UPSTREAM_CHECK_URI`` to provide a different URI that 10986 you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that
8583 contains the link to the latest tarball. 10987 contains the link to the latest tarball::
8584 ::
8585 10988
8586 UPSTREAM_CHECK_URI = "recipe_url" 10989 UPSTREAM_CHECK_URI = "recipe_url"
8587 10990
10991 :term:`UPSTREAM_VERSION_UNKNOWN`
10992 You can perform a per-recipe check for what the latest upstream
10993 source code version is by calling ``devtool latest-version recipe``.
10994 If no combination of the :term:`UPSTREAM_CHECK_URI`, :term:`UPSTREAM_CHECK_REGEX`,
10995 :term:`UPSTREAM_CHECK_GITTAGREGEX` and :term:`UPSTREAM_CHECK_COMMITS` variables in
10996 the recipe allows to determine what the latest upstream version is,
10997 you can set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1`` in the recipe
10998 to acknowledge that the check cannot be performed::
10999
11000 UPSTREAM_VERSION_UNKNOWN = "1"
11001
8588 :term:`USE_DEVFS` 11002 :term:`USE_DEVFS`
8589 Determines if ``devtmpfs`` is used for ``/dev`` population. The 11003 Determines if ``devtmpfs`` is used for ``/dev`` population. The
8590 default value used for ``USE_DEVFS`` is "1" when no value is 11004 default value used for :term:`USE_DEVFS` is "1" when no value is
8591 specifically set. Typically, you would set ``USE_DEVFS`` to "0" for a 11005 specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a
8592 statically populated ``/dev`` directory. 11006 statically populated ``/dev`` directory.
8593 11007
8594 See the ":ref:`dev-manual/common-tasks:selecting a device manager`" section in 11008 See the ":ref:`dev-manual/device-manager:selecting a device manager`" section in
8595 the Yocto Project Development Tasks Manual for information on how to 11009 the Yocto Project Development Tasks Manual for information on how to
8596 use this variable. 11010 use this variable.
8597 11011
8598 :term:`USE_VT` 11012 :term:`USE_VT`
8599 When using 11013 When using
8600 :ref:`SysVinit <dev-manual/common-tasks:enabling system services>`, 11014 :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
8601 determines whether or not to run a 11015 determines whether or not to run a :wikipedia:`getty <Getty_(Unix)>`
8602 `getty <https://en.wikipedia.org/wiki/Getty_%28Unix%29>`__ on any 11016 on any virtual terminals in order to enable logging in through those
8603 virtual terminals in order to enable logging in through those
8604 terminals. 11017 terminals.
8605 11018
8606 The default value used for ``USE_VT`` is "1" when no default value is 11019 The default value used for :term:`USE_VT` is "1" when no default value is
8607 specifically set. Typically, you would set ``USE_VT`` to "0" in the 11020 specifically set. Typically, you would set :term:`USE_VT` to "0" in the
8608 machine configuration file for machines that do not have a graphical 11021 machine configuration file for machines that do not have a graphical
8609 display attached and therefore do not need virtual terminal 11022 display attached and therefore do not need virtual terminal
8610 functionality. 11023 functionality.
8611 11024
8612 :term:`USER_CLASSES` 11025 :term:`USER_CLASSES`
8613 A list of classes to globally inherit. These classes are used by the 11026 A list of classes to globally inherit. These classes are used by the
8614 OpenEmbedded build system to enable extra features (e.g. 11027 OpenEmbedded build system to enable extra features.
8615 ``buildstats``, ``image-mklibs``, and so forth). 11028
11029 Classes inherited using :term:`USER_CLASSES` must be located in the
11030 ``classes-global/`` or ``classes/`` subdirectories.
8616 11031
8617 The default list is set in your ``local.conf`` file: 11032 The default list is set in your ``local.conf`` file::
8618 ::
8619 11033
8620 USER_CLASSES ?= "buildstats image-mklibs image-prelink" 11034 USER_CLASSES ?= "buildstats"
8621 11035
8622 For more information, see 11036 For more information, see
8623 ``meta-poky/conf/local.conf.sample`` in the :term:`Source Directory`. 11037 ``meta-poky/conf/templates/default/local.conf.sample`` in the
11038 :term:`Source Directory`.
11039
11040 :term:`USERADD_DEPENDS`
11041 Specifies a list of recipes that create users / groups (via
11042 :term:`USERADD_PARAM` / :term:`GROUPADD_PARAM`) which a recipe
11043 depends upon. This ensures that those users / groups are available
11044 when building a recipe.
8624 11045
8625 :term:`USERADD_ERROR_DYNAMIC` 11046 :term:`USERADD_ERROR_DYNAMIC`
8626 If set to ``error``, forces the OpenEmbedded build system to produce 11047 If set to ``error``, forces the OpenEmbedded build system to produce
@@ -8632,11 +11053,10 @@ system and gives an overview of their function and contents.
8632 11053
8633 The default behavior for the build system is to dynamically apply 11054 The default behavior for the build system is to dynamically apply
8634 ``uid`` and ``gid`` values. Consequently, the 11055 ``uid`` and ``gid`` values. Consequently, the
8635 ``USERADD_ERROR_DYNAMIC`` variable is by default not set. If you plan 11056 :term:`USERADD_ERROR_DYNAMIC` variable is by default not set. If you plan
8636 on using statically assigned ``gid`` and ``uid`` values, you should 11057 on using statically assigned ``gid`` and ``uid`` values, you should
8637 set the ``USERADD_ERROR_DYNAMIC`` variable in your ``local.conf`` 11058 set the :term:`USERADD_ERROR_DYNAMIC` variable in your ``local.conf``
8638 file as follows: 11059 file as follows::
8639 ::
8640 11060
8641 USERADD_ERROR_DYNAMIC = "error" 11061 USERADD_ERROR_DYNAMIC = "error"
8642 11062
@@ -8650,7 +11070,7 @@ system and gives an overview of their function and contents.
8650 .. note:: 11070 .. note::
8651 11071
8652 There is a difference in behavior between setting 11072 There is a difference in behavior between setting
8653 ``USERADD_ERROR_DYNAMIC`` to ``error`` and setting it to ``warn``. 11073 :term:`USERADD_ERROR_DYNAMIC` to ``error`` and setting it to ``warn``.
8654 When it is set to ``warn``, the build system will report a warning for 11074 When it is set to ``warn``, the build system will report a warning for
8655 every undefined ``uid`` and ``gid`` in any recipe. But when it is set 11075 every undefined ``uid`` and ``gid`` in any recipe. But when it is set
8656 to ``error``, it will only report errors for recipes that are actually 11076 to ``error``, it will only report errors for recipes that are actually
@@ -8666,8 +11086,7 @@ system and gives an overview of their function and contents.
8666 When applying static group identification (``gid``) values, the 11086 When applying static group identification (``gid``) values, the
8667 OpenEmbedded build system looks in :term:`BBPATH` for a 11087 OpenEmbedded build system looks in :term:`BBPATH` for a
8668 ``files/group`` file and then applies those ``uid`` values. Set the 11088 ``files/group`` file and then applies those ``uid`` values. Set the
8669 variable as follows in your ``local.conf`` file: 11089 variable as follows in your ``local.conf`` file::
8670 ::
8671 11090
8672 11091
8673 USERADD_GID_TABLES = "files/group" 11092 USERADD_GID_TABLES = "files/group"
@@ -8678,33 +11097,31 @@ system and gives an overview of their function and contents.
8678 causes the build system to use static ``gid`` values. 11097 causes the build system to use static ``gid`` values.
8679 11098
8680 :term:`USERADD_PACKAGES` 11099 :term:`USERADD_PACKAGES`
8681 When inheriting the :ref:`useradd <ref-classes-useradd>` class, 11100 When inheriting the :ref:`ref-classes-useradd` class,
8682 this variable specifies the individual packages within the recipe 11101 this variable specifies the individual packages within the recipe
8683 that require users and/or groups to be added. 11102 that require users and/or groups to be added.
8684 11103
8685 You must set this variable if the recipe inherits the class. For 11104 You must set this variable if the recipe inherits the class. For
8686 example, the following enables adding a user for the main package in 11105 example, the following enables adding a user for the main package in
8687 a recipe: 11106 a recipe::
8688 ::
8689 11107
8690 USERADD_PACKAGES = "${PN}" 11108 USERADD_PACKAGES = "${PN}"
8691 11109
8692 .. note:: 11110 .. note::
8693 11111
8694 It follows that if you are going to use the ``USERADD_PACKAGES`` 11112 It follows that if you are going to use the :term:`USERADD_PACKAGES`
8695 variable, you need to set one or more of the :term:`USERADD_PARAM`, 11113 variable, you need to set one or more of the :term:`USERADD_PARAM`,
8696 :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables. 11114 :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables.
8697 11115
8698 :term:`USERADD_PARAM` 11116 :term:`USERADD_PARAM`
8699 When inheriting the :ref:`useradd <ref-classes-useradd>` class, 11117 When inheriting the :ref:`ref-classes-useradd` class,
8700 this variable specifies for a package what parameters should pass to 11118 this variable specifies for a package what parameters should pass to
8701 the ``useradd`` command if you add a user to the system when the 11119 the ``useradd`` command if you add a user to the system when the
8702 package is installed. 11120 package is installed.
8703 11121
8704 Here is an example from the ``dbus`` recipe: 11122 Here is an example from the ``dbus`` recipe::
8705 ::
8706 11123
8707 USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \ 11124 USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/dbus \
8708 --no-create-home --shell /bin/false \ 11125 --no-create-home --shell /bin/false \
8709 --user-group messagebus" 11126 --user-group messagebus"
8710 11127
@@ -8720,8 +11137,7 @@ system and gives an overview of their function and contents.
8720 When applying static user identification (``uid``) values, the 11137 When applying static user identification (``uid``) values, the
8721 OpenEmbedded build system looks in :term:`BBPATH` for a 11138 OpenEmbedded build system looks in :term:`BBPATH` for a
8722 ``files/passwd`` file and then applies those ``uid`` values. Set the 11139 ``files/passwd`` file and then applies those ``uid`` values. Set the
8723 variable as follows in your ``local.conf`` file: 11140 variable as follows in your ``local.conf`` file::
8724 ::
8725 11141
8726 USERADD_UID_TABLES = "files/passwd" 11142 USERADD_UID_TABLES = "files/passwd"
8727 11143
@@ -8752,48 +11168,105 @@ system and gives an overview of their function and contents.
8752 Additionally, you should also set the 11168 Additionally, you should also set the
8753 :term:`USERADD_ERROR_DYNAMIC` variable. 11169 :term:`USERADD_ERROR_DYNAMIC` variable.
8754 11170
8755 :term:`VOLATILE_LOG_DIR` 11171 :term:`VIRTUAL-RUNTIME`
8756 Specifies the persistence of the target's ``/var/log`` directory, 11172 :term:`VIRTUAL-RUNTIME` is a commonly used prefix for defining virtual
8757 which is used to house postinstall target log files. 11173 packages for runtime usage, typically for use in :term:`RDEPENDS`
11174 or in image definitions.
11175
11176 An example is ``VIRTUAL-RUNTIME_base-utils`` that makes it possible
11177 to either use BusyBox based utilities::
11178
11179 VIRTUAL-RUNTIME_base-utils = "busybox"
11180
11181 or their full featured implementations from GNU Coreutils
11182 and other projects::
11183
11184 VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils"
11185
11186 Here are two examples using this virtual runtime package. The
11187 first one is in :yocto_git:`initramfs-framework_1.0.bb
11188 </poky/tree/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb?h=scarthgap>`::
8758 11189
8759 By default, ``VOLATILE_LOG_DIR`` is set to "yes", which means the 11190 RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}"
8760 file is not persistent. You can override this setting by setting the 11191
8761 variable to "no" to make the log directory persistent. 11192 The second example is in the :yocto_git:`core-image-initramfs-boot
11193 </poky/tree/meta/recipes-core/images/core-image-initramfs-boot.bb?h=scarthgap>`
11194 image definition::
11195
11196 PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd"
8762 11197
8763 :term:`WARN_QA` 11198 :term:`WARN_QA`
8764 Specifies the quality assurance checks whose failures are reported as 11199 Specifies the quality assurance checks whose failures are reported as
8765 warnings by the OpenEmbedded build system. You set this variable in 11200 warnings by the OpenEmbedded build system. You set this variable in
8766 your distribution configuration file. For a list of the checks you 11201 your distribution configuration file. For a list of the checks you
8767 can control with this variable, see the 11202 can control with this variable, see the
8768 ":ref:`insane.bbclass <ref-classes-insane>`" section. 11203 ":ref:`ref-classes-insane`" section.
11204
11205 :term:`WATCHDOG_RUNTIME_SEC`
11206 For the ``systemd`` recipe, this controls the value of the
11207 ``RuntimeWatchdogSec`` option in ``/etc/systemd/system.conf``. The default
11208 value is an empty string.
11209
11210 :term:`WATCHDOG_TIMEOUT`
11211 Specifies the timeout in seconds used by the ``watchdog-config`` recipe
11212 and also by ``systemd`` during reboot. The default is 60 seconds.
11213
11214 :term:`WIC_CREATE_EXTRA_ARGS`
11215 If the :term:`IMAGE_FSTYPES` variable contains "wic", the build
11216 will generate a
11217 :ref:`Wic image <dev-manual/wic:creating partitioned images using wic>`
11218 automatically when BitBake builds an image recipe. As part of
11219 this process BitBake will invoke the "`wic create`" command. The
11220 :term:`WIC_CREATE_EXTRA_ARGS` variable is placed at the end of this
11221 command which allows the user to supply additional arguments.
11222
11223 One such useful purpose for this mechanism is to add the ``-D`` (or
11224 ``--debug``) argument to the "`wic create`" command. This increases the
11225 amount of debugging information written out to the Wic log during the
11226 Wic creation process.
11227
11228 :term:`WIC_SECTOR_SIZE`
11229 The variable :term:`WIC_SECTOR_SIZE` controls the sector size of Wic
11230 images. In the background, this controls the value of the
11231 ``PARTED_SECTOR_SIZE`` environment variable passed to the ``parted``
11232 command-line utility, used to generated the images. The default value is
11233 ``512``.
11234
11235 For more information on how to create Wic images, see the
11236 ":ref:`dev-manual/wic:creating partitioned images using wic`" section in
11237 the Yocto Project Development Tasks Manual.
11238
11239 :term:`WIRELESS_DAEMON`
11240 For ``connman`` and ``packagegroup-base``, specifies the wireless
11241 daemon to use. The default is "wpa-supplicant" (note that the value
11242 uses a dash and not an underscore).
8769 11243
8770 :term:`WKS_FILE` 11244 :term:`WKS_FILE`
8771 Specifies the location of the Wic kickstart file that is used by the 11245 Specifies the location of the Wic kickstart file that is used by the
8772 OpenEmbedded build system to create a partitioned image 11246 OpenEmbedded build system to create a partitioned image
8773 (image\ ``.wic``). For information on how to create a partitioned 11247 (``image.wic``). For information on how to create a partitioned
8774 image, see the 11248 image, see the
8775 ":ref:`dev-manual/common-tasks:creating partitioned images using wic`" 11249 ":ref:`dev-manual/wic:creating partitioned images using wic`"
8776 section in the Yocto Project Development Tasks Manual. For details on 11250 section in the Yocto Project Development Tasks Manual. For details on
8777 the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter. 11251 the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter.
8778 11252
8779 :term:`WKS_FILE_DEPENDS` 11253 :term:`WKS_FILE_DEPENDS`
8780 When placed in the recipe that builds your image, this variable lists 11254 When placed in the recipe that builds your image, this variable lists
8781 build-time dependencies. The ``WKS_FILE_DEPENDS`` variable is only 11255 build-time dependencies. The :term:`WKS_FILE_DEPENDS` variable is only
8782 applicable when Wic images are active (i.e. when 11256 applicable when Wic images are active (i.e. when
8783 :term:`IMAGE_FSTYPES` contains entries related 11257 :term:`IMAGE_FSTYPES` contains entries related
8784 to Wic). If your recipe does not create Wic images, the variable has 11258 to Wic). If your recipe does not create Wic images, the variable has
8785 no effect. 11259 no effect.
8786 11260
8787 The ``WKS_FILE_DEPENDS`` variable is similar to the 11261 The :term:`WKS_FILE_DEPENDS` variable is similar to the
8788 :term:`DEPENDS` variable. When you use the variable in 11262 :term:`DEPENDS` variable. When you use the variable in
8789 your recipe that builds the Wic image, dependencies you list in the 11263 your recipe that builds the Wic image, dependencies you list in the
8790 ``WIC_FILE_DEPENDS`` variable are added to the ``DEPENDS`` variable. 11264 :term:`WKS_FILE_DEPENDS` variable are added to the :term:`DEPENDS` variable.
8791 11265
8792 With the ``WKS_FILE_DEPENDS`` variable, you have the possibility to 11266 With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to
8793 specify a list of additional dependencies (e.g. native tools, 11267 specify a list of additional dependencies (e.g. native tools,
8794 bootloaders, and so forth), that are required to build Wic images. 11268 bootloaders, and so forth), that are required to build Wic images.
8795 Following is an example: 11269 Here is an example::
8796 ::
8797 11270
8798 WKS_FILE_DEPENDS = "some-native-tool" 11271 WKS_FILE_DEPENDS = "some-native-tool"
8799 11272
@@ -8801,14 +11274,26 @@ system and gives an overview of their function and contents.
8801 previous example, some-native-tool would be replaced with an actual 11274 previous example, some-native-tool would be replaced with an actual
8802 native tool on which the build would depend. 11275 native tool on which the build would depend.
8803 11276
11277 :term:`WKS_FILES`
11278 Specifies a list of candidate Wic kickstart files to be used by the
11279 OpenEmbedded build system to create a partitioned image. Only the
11280 first one that is found, from left to right, will be used.
11281
11282 This is only useful when there are multiple ``.wks`` files that can be
11283 used to produce an image. A typical case is when multiple layers are
11284 used for different hardware platforms, each supplying a different
11285 ``.wks`` file. In this case, you specify all possible ones through
11286 :term:`WKS_FILES`.
11287
11288 If only one ``.wks`` file is used, set :term:`WKS_FILE` instead.
11289
8804 :term:`WORKDIR` 11290 :term:`WORKDIR`
8805 The pathname of the work directory in which the OpenEmbedded build 11291 The pathname of the work directory in which the OpenEmbedded build
8806 system builds a recipe. This directory is located within the 11292 system builds a recipe. This directory is located within the
8807 :term:`TMPDIR` directory structure and is specific to 11293 :term:`TMPDIR` directory structure and is specific to
8808 the recipe being built and the system for which it is being built. 11294 the recipe being built and the system for which it is being built.
8809 11295
8810 The ``WORKDIR`` directory is defined as follows: 11296 The :term:`WORKDIR` directory is defined as follows::
8811 ::
8812 11297
8813 ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR} 11298 ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
8814 11299
@@ -8817,18 +11302,17 @@ system and gives an overview of their function and contents.
8817 - :term:`TMPDIR`: The top-level build output directory 11302 - :term:`TMPDIR`: The top-level build output directory
8818 - :term:`MULTIMACH_TARGET_SYS`: The target system identifier 11303 - :term:`MULTIMACH_TARGET_SYS`: The target system identifier
8819 - :term:`PN`: The recipe name 11304 - :term:`PN`: The recipe name
8820 - :term:`EXTENDPE`: The epoch - (if :term:`PE` is not specified, which 11305 - :term:`EXTENDPE`: The epoch --- if :term:`PE` is not specified, which
8821 is usually the case for most recipes, then `EXTENDPE` is blank) 11306 is usually the case for most recipes, then :term:`EXTENDPE` is blank.
8822 - :term:`PV`: The recipe version 11307 - :term:`PV`: The recipe version
8823 - :term:`PR`: The recipe revision 11308 - :term:`PR`: The recipe revision
8824 11309
8825 As an example, assume a Source Directory top-level folder name 11310 As an example, assume a Source Directory top-level folder name
8826 ``poky``, a default Build Directory at ``poky/build``, and a 11311 ``poky``, a default :term:`Build Directory` at ``poky/build``, and a
8827 ``qemux86-poky-linux`` machine target system. Furthermore, suppose 11312 ``qemux86-poky-linux`` machine target system. Furthermore, suppose
8828 your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work 11313 your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work
8829 directory the build system uses to build the package would be as 11314 directory the build system uses to build the package would be as
8830 follows: 11315 follows::
8831 ::
8832 11316
8833 poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0 11317 poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
8834 11318
@@ -8839,6 +11323,42 @@ system and gives an overview of their function and contents.
8839 indirectly, includes "x11-base" in 11323 indirectly, includes "x11-base" in
8840 :term:`IMAGE_FEATURES`. 11324 :term:`IMAGE_FEATURES`.
8841 11325
8842 The default value of ``XSERVER``, if not specified in the machine 11326 The default value of :term:`XSERVER`, if not specified in the machine
8843 configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev". 11327 configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev".
8844 11328
11329 :term:`XZ_MEMLIMIT`
11330 Specifies the maximum memory the xz compression should use as a percentage
11331 of system memory. If unconstrained the xz compressor can use large amounts of
11332 memory and become problematic with parallelism elsewhere in the build.
11333 "50%" has been found to be a good value.
11334
11335 :term:`XZ_THREADS`
11336 Specifies the number of parallel threads that should be used when
11337 using xz compression.
11338
11339 By default this scales with core count, but is never set less than 2
11340 to ensure that multi-threaded mode is always used so that the output
11341 file contents are deterministic. Builds will work with a value of 1
11342 but the output will differ compared to the output from the compression
11343 generated when more than one thread is used.
11344
11345 On systems where many tasks run in parallel, setting a limit to this
11346 can be helpful in controlling system resource usage.
11347
11348 :term:`ZSTD_COMPRESSION_LEVEL`
11349 Specifies the compression level to be used with ZStandard compression
11350 (from ``1`` to ``19``, set to ``3`` by default, following upstream choice).
11351 Higher levels produce smaller files, but take longer to complete.
11352
11353 :term:`ZSTD_THREADS`
11354 Specifies the number of parallel threads that should be used when
11355 using ZStandard compression.
11356
11357 By default this scales with core count, but is never set less than 2
11358 to ensure that multi-threaded mode is always used so that the output
11359 file contents are deterministic. Builds will work with a value of 1
11360 but the output will differ compared to the output from the compression
11361 generated when more than one thread is used.
11362
11363 On systems where many tasks run in parallel, setting a limit to this
11364 can be helpful in controlling system resource usage.
diff --git a/documentation/ref-manual/varlocality.rst b/documentation/ref-manual/varlocality.rst
index 5f7dba8775..e2c086ffa0 100644
--- a/documentation/ref-manual/varlocality.rst
+++ b/documentation/ref-manual/varlocality.rst
@@ -113,7 +113,7 @@ This section lists variables that are required for recipes.
113 113
114- :term:`LIC_FILES_CHKSUM` 114- :term:`LIC_FILES_CHKSUM`
115 115
116- :term:`SRC_URI` - used in recipes that fetch local or remote files. 116- :term:`SRC_URI` --- used in recipes that fetch local or remote files.
117 117
118.. _ref-varlocality-recipe-dependencies: 118.. _ref-varlocality-recipe-dependencies:
119 119
diff --git a/documentation/ref-manual/yocto-project-supported-features.rst b/documentation/ref-manual/yocto-project-supported-features.rst
new file mode 100644
index 0000000000..0e6c33cf6e
--- /dev/null
+++ b/documentation/ref-manual/yocto-project-supported-features.rst
@@ -0,0 +1,267 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3**************************************************
4Yocto Project Supported Architectures And Features
5**************************************************
6
7The Yocto Project is putting continuous efforts into testing the changes made to
8the :term:`OpenEmbedded-Core (OE-Core)` metadata and core tools. The details on
9how this test environment functions is described in the
10:doc:`/test-manual/index`.
11
12These tests are also run for stable and :term:`LTS` versions of the Yocto
13Project. See the :doc:`/ref-manual/release-process` section of the Yocto Project
14Reference Manual for more information on these types of releases.
15
16The infrastructure behind the test environment is the
17:ref:`Yocto Project Autobuilder <test-manual/intro:Yocto Project Autobuilder
18Overview>`. The Autobuilder contains a set of Builders that are associated to an
19architecture or a feature to test. For example, the ``qemuarm64`` builder
20corresponds to testing the ARM 64-bit architecture.
21
22Below is a comprehensive list of target architectures and features that are
23supported, as well as their level of support. For each architecture or feature,
24their corresponding builders are also listed.
25
26Primary Supported
27=================
28
29The term "primary" means that dedicated builds for these architectures or
30features are being run on a daily basis on the Yocto Project Autobuilder and
31also tested with incoming changes before they merge. These changes are usually
32on the "-next" Git branches of the :term:`OpenEmbedded-Core (OE-Core)`
33repositories.
34
35Below is a list of primary tested features, their maintainer(s) and builder(s):
36
37.. list-table::
38 :widths: 20 20 20 40
39 :header-rows: 1
40
41 * - Feature
42 - Description
43 - Maintainer(s)
44 - Builder(s)
45 * - :wikipedia:`ARM <ARM_architecture_family>`
46 - ARM architecture testing
47 - Collective effort
48 - genericarm64,
49 genericarm64-alt,
50 musl-qemuarm64,
51 qemuarm,
52 qemuarm-alt,
53 qemuarm-oecore,
54 qemuarm-tc,
55 qemuarm64,
56 qemuarm64-alt,
57 qemuarm64-armhost,
58 qemuarm64-ltp,
59 qemuarm64-ptest,
60 qemuarm64-tc,
61 qemuarmv5
62 * - :yocto_git:`Beaglebone </poky/tree/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf>`
63 - Beaglebone image and SDK build testing
64 - Collective effort
65 - beaglebone,
66 beaglebone-alt
67 * - :doc:`Reproducible </test-manual/reproducible-builds>`
68 - reproducibility testing
69 - Collective effort
70 - reproducible
71 * - :term:`Buildtools`
72 - Buildtools generation
73 - Collective effort
74 - buildtools
75 * - `meta-agl-core <https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl>`__
76 - meta-agl-core layer testing
77 - TBD
78 - meta-agl-core
79 * - `meta-arm <https://git.yoctoproject.org/meta-arm>`__
80 - meta-arm layer testing
81 - meta-arm mailing list <meta-arm@lists.yoctoproject.org>
82 - meta-arm
83 * - `meta-aws <https://github.com/aws4embeddedlinux/meta-aws>`__
84 - meta-aws layer testing
85 - TBD
86 - meta-aws
87 * - `meta-intel <https://git.yoctoproject.org/meta-intel>`__
88 - meta-intel layer testing
89 - meta-intel mailing list <meta-intel@lists.yoctoproject.org>
90 - meta-intel
91 * - `meta-exein <https://github.com/exein-io/meta-exein>`__
92 - meta-exein layer testing
93 - TBD
94 - meta-exein
95 * - `meta-webosose <https://github.com/webosose/meta-webosose>`__
96 - meta-webosose layer testing
97 - TBD
98 - meta-webosose
99 * - :ref:`Multilib <dev-manual/libraries:Combining Multiple Versions of Library Files into One Image>`
100 - Multilib feature testing
101 - Collective effort
102 - multilib
103 * - :term:`OpenEmbedded-Core selftest<OpenEmbedded-Core (OE-Core)>`
104 - OpenEmbedded-Core layers selftests
105 - Collective effort
106 - oe-selftest-fedora,
107 oe-selftest-debian,
108 oe-selftest-armhost
109 * - Package managers
110 - Package managers (RPM, DEB and IPK formats) testing in the
111 :term:`OpenEmbedded Build System` (different from the
112 ``package-management`` :term:`image feature <IMAGE_FEATURES>`)
113 - Collective effort
114 - pkgman-non-rpm (other builders use RPM by default)
115 * - :ref:`Patchtest <contributor-guide/submit-changes:Validating Patches with Patchtest>`
116 - Patchtest tool selftests
117 - Collective effort
118 - patchtest-selftest
119 * - :wikipedia:`RISC-V (64-bit) <RISC-V>`
120 - RISC-V architecture testing (64-bit)
121 - Collective effort
122 - qemuriscv64,
123 qemuriscv64-ptest,
124 qemuriscv64-tc
125 * - :wikipedia:`systemd <Systemd>`
126 - Systemd init manager testing
127 - Collective effort
128 - no-x11, qa-extras2
129 * - :term:`Toaster`
130 - Toaster web interface testing
131 - Collective effort
132 - toaster
133 * - :ref:`Wic <dev-manual/wic:creating partitioned images using wic>`
134 - WIC image creation testing
135 - Collective effort
136 - wic
137 * - :wikipedia:`X86 <X86>`
138 - X86 architecture testing
139 - Collective effort
140 - genericx86,
141 genericx86-64,
142 genericx86-64-alt,
143 genericx86-alt,
144 musl-qemux86,
145 musl-qemux86-64,
146 qemux86,
147 qemux86-64,
148 qemux86-64-alt,
149 qemux86-64-ltp,
150 qemux86-64-ptest,
151 qemux86-64-tc,
152 qemux86-64-x32,
153 qemux86-alt,
154 qemux86-tc,
155 qemux86-world,
156 qemux86-world-alt
157
158Secondary Supported
159===================
160
161The term "secondary" means that in some cases there is code/feature/support
162which is desired by people using the project and is in the project's interests
163to support, however there isn't wide enough interest and support to justify
164testing all incoming changes on it. There are however project member
165organisations and maintainers willing to run tests and review fixes.
166
167This category may be applicable as support/usage in an area develops and grows,
168or as support/usage fades but we continue to have tests. It can also apply where
169resourcing isn't available for full primary support but there is
170member/maintainer support for running tests.
171
172We therefore have the following criteria and policies for such items:
173
174- It can be clearly isolated and defined by specific configuration.
175
176- There is a clear documented group of maintainers agreeing to maintain it.
177
178- Those maintainers are active and responsive.
179
180- It is being actively and publicly tested (potentially using
181 the :ref:`Autobuilder <test-manual/intro:Yocto Project Autobuilder Overview>`
182 by agreement, or otherwise).
183
184- Testing would not be part of standard incoming change testing and regressions
185 would not block incoming patches.
186
187- The :yocto_wiki:`SWAT </Yocto_Build_Failure_Swat_Team>` team would not handle
188 any test builds on the Autobuilder.
189
190- Test results can be submitted as part of the release process if desired.
191
192The Yocto Project :oe_wiki:`Technical Steering Committee (TSC) </TSC>` makes
193decisions on features in this status and Autobuilder testing. Such support would
194be dropped if the maintainers/testing were inactive.
195
196If you are interested in providing resources for improving testing please
197contact the :oe_wiki:`Technical Steering Committee (TSC) </TSC>`.
198
199Below is a list of secondary tested features, their maintainer(s) and
200builder(s):
201
202.. list-table::
203 :widths: 20 20 20 40
204 :header-rows: 1
205
206 * - Feature
207 - Description
208 - Maintainer(s)
209 - Builder(s)
210 * - :wikipedia:`PowerPC (32-bit) <PowerPC>`
211 - PowerPC architecture testing (32-bit)
212 - Peter Marko,
213 Adrian Freihofer
214 - qemuppc,
215 qemuppc-tc
216 * - :oe_git:`meta-openembedded </meta-openembedded>`
217 - meta-openembedded layer testing
218 - Collective effort / openembedded-devel mailing list <openebedded-devel@lists.openembedded.org>
219 - meta-oe
220 * - `meta-mingw <https://git.yoctoproject.org/meta-mingw>`__
221 - mingw based SDKs testing
222 - TBD
223 - meta-mingw
224 * - `meta-virtualization <https://git.yoctoproject.org/meta-virtualization/>`__
225 - meta-virtualization layer testing
226 - meta-virtualization mailing list <meta-virtualization@lists.yoctoproject.org>
227 - meta-virt
228 * - :wikipedia:`RISC-V (32-bit) <RISC-V>`
229 - RISC-V architecture testing (32-bit)
230 - TBD
231 - qemuriscv32,
232 qemuriscv32,
233 qemuriscv32-tc
234
235Untested
236========
237
238"Untested" means that whilst the configurations are present in the project, we
239don't currently run the tests on any regular basis and new changes are not
240tested against them. We may take patches in these areas if they make sense but
241it is on a best effort only basis.
242
243.. list-table::
244 :widths: 20 20 20 40
245 :header-rows: 1
246
247 * - Feature
248 - Description
249 - Maintainer(s)
250 - Builder(s)
251 * - :wikipedia:`MIPS <MIPS_architecture>`
252 - MIPS architecture testing
253 - No maintainers
254 - qemumips,
255 qemumips64,
256 qemumips-alt,
257 qemumips-tc,
258 qemumips64-tc
259 * - :wikipedia:`PowerPC (32-bit) <PowerPC>` Systemd
260 - PowerPC architecture testing (32-bit) with systemd
261 - No maintainers
262 - qemuppc-alt
263 * - :wikipedia:`PowerPC (64-bit) <PowerPC>`
264 - PowerPC architecture testing (64-bit)
265 - No maintainers
266 - qemuppc64,
267 qemuppc64-tc