diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/conf/bitbake.conf | 3 | ||||
-rw-r--r-- | meta/lib/oe/utils.py | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 90e5f7a3b..2539ae0f0 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -694,6 +694,9 @@ MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= "" MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= "" IMAGE_FEATURES += "${EXTRA_IMAGE_FEATURES}" +DISTRO_FEATURES_BACKFILL = "" +DISTRO_FEATURES_append = "${@oe.utils.distro_features_backfill(d)}" + COMBINED_FEATURES = "\ ${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "alsa", d)} \ ${@base_both_contain("DISTRO_FEATURES", "MACHINE_FEATURES", "bluetooth", d)} \ diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 02d544294..8912dac3b 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -88,3 +88,23 @@ def param_bool(cfg, field, dflt = None): def inherits(d, *classes): """Return True if the metadata inherits any of the specified classes""" return any(bb.data.inherits_class(cls, d) for cls in classes) + +def distro_features_backfill(d): + # This construct allows the addition of new features to DISTRO_FEATURES + # that if not present would disable existing functionality, without + # disturbing distributions that have already set DISTRO_FEATURES. + # Distributions wanting to elide a value in DISTRO_FEATURES_BACKFILL should + # add the feature to DISTRO_FEATURES_BACKFILL_CONSIDERED + + backfill = (d.getVar("DISTRO_FEATURES_BACKFILL", True) or "").split() + considered = (d.getVar("DISTRO_FEATURES_BACKFILL_CONSIDERED", True) or "").split() + + addfeatures = [] + for feature in backfill: + if feature not in considered: + addfeatures.append(feature) + + if addfeatures: + return " %s" % (" ".join(addfeatures)) + else: + return "" |