diff options
Diffstat (limited to 'documentation/ref-manual/features.rst')
-rw-r--r-- | documentation/ref-manual/features.rst | 277 |
1 files changed, 196 insertions, 81 deletions
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 | ||
7 | This chapter provides a reference of shipped machine and distro features | 7 | This chapter provides a reference of shipped machine and distro features |
8 | you can include as part of your image, a reference on image features you | 8 | you can include as part of your image, a reference on image features you |
9 | can select, and a reference on feature backfilling. | 9 | can select, and a reference on :ref:`ref-features-backfill`. |
10 | 10 | ||
11 | Features provide a mechanism for working out which packages should be | 11 | Features provide a mechanism for working out which packages should be |
12 | included in the generated images. Distributions can select which | 12 | included in the generated images. Distributions can select which |
13 | features they want to support through the ``DISTRO_FEATURES`` variable, | 13 | features they want to support through the :term:`DISTRO_FEATURES` variable, |
14 | which is set or appended to in a distribution's configuration file such | 14 | which is set or appended to in a distribution's configuration file such |
15 | as ``poky.conf``, ``poky-tiny.conf``, ``poky-lsb.conf`` and so forth. | 15 | as ``poky.conf``, ``poky-tiny.conf``, ``poky-altcfg.conf`` and so forth. |
16 | Machine features are set in the ``MACHINE_FEATURES`` variable, which is | 16 | Machine features are set in the :term:`MACHINE_FEATURES` variable, which is |
17 | set in the machine configuration file and specifies the hardware | 17 | set in the machine configuration file and specifies the hardware |
18 | features for a given machine. | 18 | features for a given machine. |
19 | 19 | ||
@@ -26,8 +26,7 @@ One method you can use to determine which recipes are checking to see if | |||
26 | a particular feature is contained or not is to ``grep`` through the | 26 | a 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 |
28 | discovers the recipes whose build is potentially changed based on a | 28 | discovers the recipes whose build is potentially changed based on a |
29 | given feature: | 29 | given 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 | |||
101 | a package or packages. In most cases, the presence or absence of a | 102 | a package or packages. In most cases, the presence or absence of a |
102 | feature translates to the appropriate option supplied to the configure | 103 | feature translates to the appropriate option supplied to the configure |
103 | script during the :ref:`ref-tasks-configure` task for | 104 | script during the :ref:`ref-tasks-configure` task for |
104 | the recipes that optionally support the feature. | 105 | the recipes that optionally support the feature. Appropriate options |
106 | must be supplied, and enabling/disabling :term:`PACKAGECONFIG` for the | ||
107 | concerned packages is one way of supplying such options. | ||
105 | 108 | ||
106 | Some distro features are also machine features. These select features | 109 | Some distro features are also machine features. These select features |
107 | make sense to be controlled both at the machine and distribution | 110 | make 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 |
110 | information. | 113 | information. |
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 | |||
112 | This list only represents features as shipped with the Yocto Project | 122 | This list only represents features as shipped with the Yocto Project |
113 | metadata: | 123 | metadata, 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 | ||
189 | Image Features | 264 | Image Features |
@@ -197,28 +272,41 @@ you can add several different predefined packages such as development | |||
197 | utilities or packages with debug information needed to investigate | 272 | utilities or packages with debug information needed to investigate |
198 | application problems or profile applications. | 273 | application problems or profile applications. |
199 | 274 | ||
200 | The following image features are available for all images: | 275 | The 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 | ||
254 | Some image features are available only when you inherit the | 360 | Some 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 |
256 | these valid features is as follows: | 362 | these 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: | |||
293 | Feature Backfilling | 416 | Feature Backfilling |
294 | =================== | 417 | =================== |
295 | 418 | ||
296 | Sometimes it is necessary in the OpenEmbedded build system to extend | 419 | Sometimes it is necessary in the OpenEmbedded build system to |
297 | :term:`MACHINE_FEATURES` or | 420 | add 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 |
299 | that was previously enabled and not able to be disabled. For these | 422 | distributions or machine definitions to opt out of such new |
300 | cases, we need to add an additional feature item to appear in one of | 423 | features, to retain the same overall level of functionality. |
301 | these variables, but we do not want to force developers who have | 424 | |
302 | existing values of the variables in their configuration to add the new | 425 | To make this possible, the OpenEmbedded build system has a mechanism to |
303 | feature in order to retain the same overall level of functionality. | 426 | automatically "backfill" features into existing distro or machine |
304 | Thus, the OpenEmbedded build system has a mechanism to automatically | ||
305 | "backfill" these added features into existing distro or machine | ||
306 | configurations. You can see the list of features for which this is done | 427 | configurations. You can see the list of features for which this is done |
307 | by finding the | 428 | by 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. |
310 | variables in the ``meta/conf/bitbake.conf`` file. | 431 | |
311 | 432 | These two variables are paired with the | |
312 | Because such features are backfilled by default into all configurations | ||
313 | as described in the previous paragraph, developers who wish to disable | ||
314 | the new features need to be able to selectively prevent the backfilling | ||
315 | from occurring. They can do this by adding the undesired feature or | ||
316 | features to the | ||
317 | :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` | 433 | :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` |
318 | or | 434 | and :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` variables |
319 | :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` | 435 | which allow distro or machine configuration maintainers to `consider` any |
320 | variables for distro features and machine features respectively. | 436 | added feature, and decide when they wish to keep or exclude such feature, |
321 | 437 | thus preventing the backfilling from happening. | |
322 | Here are two examples to help illustrate feature backfilling: | 438 | |
323 | 439 | Here 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. | ||