summaryrefslogtreecommitdiffstats
path: root/documentation/ref-manual/features.rst
diff options
context:
space:
mode:
authorMichael Opdenacker <michael.opdenacker@bootlin.com>2023-02-28 19:07:13 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-03-20 13:16:52 +0000
commit8c49eb57b63bc867296a2853a3d132fed58add26 (patch)
tree4f1ea9cd8c50b52fa4fe989a7e117f01cdb4d27d /documentation/ref-manual/features.rst
parentf559a61295b36836f35f820c0ba74ffaed4dc13e (diff)
downloadpoky-8c49eb57b63bc867296a2853a3d132fed58add26.tar.gz
ref-manual: clarify explanations about feature backfilling
(From yocto-docs rev: edae43e60230ad5f2384f0a518b42fc08efc699e) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> CC: Joshua Watt <JPEWhacker@gmail.com> CC: Martin Jansa <martin.jansa@gmail.com> CC: Tom Hochstein <tom.hochstein@nxp.com> CC: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/ref-manual/features.rst')
-rw-r--r--documentation/ref-manual/features.rst92
1 files changed, 42 insertions, 50 deletions
diff --git a/documentation/ref-manual/features.rst b/documentation/ref-manual/features.rst
index 051bf9320a..5a064329f1 100644
--- a/documentation/ref-manual/features.rst
+++ b/documentation/ref-manual/features.rst
@@ -6,7 +6,7 @@ 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
@@ -416,58 +416,50 @@ these valid features is as follows:
416Feature Backfilling 416Feature Backfilling
417=================== 417===================
418 418
419Sometimes it is necessary in the OpenEmbedded build system to extend 419Sometimes it is necessary in the OpenEmbedded build system to
420:term:`MACHINE_FEATURES` or 420add new functionality to :term:`MACHINE_FEATURES` or
421:term:`DISTRO_FEATURES` to control functionality 421:term:`DISTRO_FEATURES`, but at the same time, allow existing
422that was previously enabled and not able to be disabled. For these 422distributions or machine definitions to opt out of such new
423cases, we need to add an additional feature item to appear in one of 423features, to retain the same overall level of functionality.
424these variables, but we do not want to force developers who have 424
425existing values of the variables in their configuration to add the new 425To make this possible, the OpenEmbedded build system has a mechanism to
426feature in order to retain the same overall level of functionality. 426automatically "backfill" features into existing distro or machine
427Thus, the OpenEmbedded build system has a mechanism to automatically
428"backfill" these added features into existing distro or machine
429configurations. 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
430by finding the 428by checking the :term:`DISTRO_FEATURES_BACKFILL` and
431:term:`DISTRO_FEATURES_BACKFILL` and 429:term:`MACHINE_FEATURES_BACKFILL` variables in the
432:term:`MACHINE_FEATURES_BACKFILL` 430``meta/conf/bitbake.conf`` file.
433variables in the ``meta/conf/bitbake.conf`` file. 431
434 432These two variables are paired with the
435Because such features are backfilled by default into all configurations
436as described in the previous paragraph, developers who wish to disable
437the new features need to be able to selectively prevent the backfilling
438from occurring. They can do this by adding the undesired feature or
439features to the
440:term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` 433:term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`
441or 434and :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` variables
442:term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` 435which allow distro or machine configuration maintainers to `consider` any
443variables for distro features and machine features respectively. 436added feature, and decide when they wish to keep or exclude such feature,
444 437thus preventing the backfilling from happening.
445Here are two examples to help illustrate feature backfilling: 438
446 439Here are two examples to illustrate feature backfilling:
447- *The "pulseaudio" distro feature option*: Previously, PulseAudio 440
448 support was enabled within the Qt and GStreamer frameworks. Because 441- *The "pulseaudio" distro feature option*: Previously, PulseAudio support was
449 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
450 through the :term:`DISTRO_FEATURES_BACKFILL` variable in the 443 is now backfilled and thus enabled for all distros through the
451 ``meta/conf/bitbake.conf`` file. However, your distro needs to 444 :term:`DISTRO_FEATURES_BACKFILL` variable in the ``meta/conf/bitbake.conf``
452 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
453 other existing distro configurations that need PulseAudio support by 446 without affecting other existing distro configurations that need PulseAudio
454 adding "pulseaudio" to :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` in 447 support. You do this by adding "pulseaudio" to
455 your distro's ``.conf`` file. Adding the feature to this variable 448 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` in your distro's ``.conf``
456 when it also exists in the :term:`DISTRO_FEATURES_BACKFILL` variable 449 file. So, adding the feature to this variable when it also exists in the
457 prevents the build system from adding the feature to your 450 :term:`DISTRO_FEATURES_BACKFILL` variable prevents the build system from
458 configuration's :term:`DISTRO_FEATURES`, effectively disabling the 451 adding the feature to your configuration's :term:`DISTRO_FEATURES`,
459 feature for that particular distro. 452 effectively disabling the feature for that particular distro.
460 453
461- *The "rtc" machine feature option*: Previously, real time clock (RTC) 454- *The "rtc" machine feature option*: Previously, real time clock (RTC)
462 support was enabled for all target devices. Because of this, the 455 support was enabled for all target devices. Because of this, the
463 feature is backfilled and thus enabled for all machines through the 456 feature is backfilled and thus enabled for all machines through the
464 :term:`MACHINE_FEATURES_BACKFILL` variable in the 457 :term:`MACHINE_FEATURES_BACKFILL` variable in the ``meta/conf/bitbake.conf``
465 ``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
466 have this capability. You can disable RTC support for your device 459 disable RTC support for your device without affecting other machines
467 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
468 feature to your machine's :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` 461 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` list in your machine's ``.conf``
469 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
470 variable when it also exists in the :term:`MACHINE_FEATURES_BACKFILL` 463 :term:`MACHINE_FEATURES_BACKFILL` variable prevents the build system from
471 variable prevents the build system from adding the feature to your 464 adding the feature to your configuration's :term:`MACHINE_FEATURES`,
472 configuration's :term:`MACHINE_FEATURES`, effectively disabling RTC 465 effectively disabling RTC support for that particular machine.
473 support for that particular machine.