diff options
author | Michael Opdenacker <michael.opdenacker@bootlin.com> | 2023-02-28 19:07:13 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-03-20 13:16:52 +0000 |
commit | 8c49eb57b63bc867296a2853a3d132fed58add26 (patch) | |
tree | 4f1ea9cd8c50b52fa4fe989a7e117f01cdb4d27d /documentation/ref-manual/features.rst | |
parent | f559a61295b36836f35f820c0ba74ffaed4dc13e (diff) | |
download | poky-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.rst | 92 |
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 | ||
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 |
@@ -416,58 +416,50 @@ these valid features is as follows: | |||
416 | Feature Backfilling | 416 | Feature Backfilling |
417 | =================== | 417 | =================== |
418 | 418 | ||
419 | Sometimes it is necessary in the OpenEmbedded build system to extend | 419 | Sometimes it is necessary in the OpenEmbedded build system to |
420 | :term:`MACHINE_FEATURES` or | 420 | add 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 |
422 | that was previously enabled and not able to be disabled. For these | 422 | distributions or machine definitions to opt out of such new |
423 | cases, we need to add an additional feature item to appear in one of | 423 | features, to retain the same overall level of functionality. |
424 | these variables, but we do not want to force developers who have | 424 | |
425 | 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 |
426 | feature in order to retain the same overall level of functionality. | 426 | automatically "backfill" features into existing distro or machine |
427 | Thus, the OpenEmbedded build system has a mechanism to automatically | ||
428 | "backfill" these added features into existing distro or machine | ||
429 | 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 |
430 | by finding the | 428 | by 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. |
433 | variables in the ``meta/conf/bitbake.conf`` file. | 431 | |
434 | 432 | These two variables are paired with the | |
435 | Because such features are backfilled by default into all configurations | ||
436 | as described in the previous paragraph, developers who wish to disable | ||
437 | the new features need to be able to selectively prevent the backfilling | ||
438 | from occurring. They can do this by adding the undesired feature or | ||
439 | features to the | ||
440 | :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` | 433 | :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` |
441 | or | 434 | and :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` variables |
442 | :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` | 435 | which allow distro or machine configuration maintainers to `consider` any |
443 | variables for distro features and machine features respectively. | 436 | added feature, and decide when they wish to keep or exclude such feature, |
444 | 437 | thus preventing the backfilling from happening. | |
445 | Here are two examples to help illustrate feature backfilling: | 438 | |
446 | 439 | Here 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. | ||