[PATCH v3 0/4] Support opt-out of any default machine and distro features

Paul Barker
2026-04-01T17:42:05Z

This is the second version of my patch series to improve DISTRO_FEATURES
& MACHINE_FEATURES handling. The first version complicated modification
of variables in conf files, requiring use of :append when we should just
be able to use +=.

In this version we directly append the filtered defaults to the target
variable, instead of using an intermediate variable. So, default distro
features are listed in DISTRO_FEATURES_DEFAULTS, this list is filtered
to remove features listed in DISTRO_FEATURES_OPTED_OUT and the result is
appended to DISTRO_FEATURES. Similar behaviour exists for
MACHINE_FEATURES_DEFAULTS, MACHINE_FEATURES_OPTED_OUT and
MACHINE_FEATURES.

See patches 2/4 & 3/4 for updated migration notes.

This series doesn't include issuing warnings if DISTRO_FEATURES_BACKFILL
or DISTRO_FEATURES_BACKFILL_CONSIDERED is set, that can be added as a
follow up if these changes are accepted.

---
Changes in v3:
- Fix test_filter_default_features(), strip DEFAULT_FEATURES before
comparison
- Don't clear DISTRO_FEATURES in native, nativesdk & crosssdk handlers.
Filtering already exists to propagate only the features we want to
keep.
- Link to v2: https://patch.msgid.link/20260331-default-features-v2-0-f73b43d8bd57@pbarker.dev

Changes in v2:
- Rename {DISTRO,MACHINE}_FEATURES_DEFAULT_RAW to
{DISTRO,MACHINE}_FEATURES_DEFAULTS.
- {DISTRO,MACHINE}_FEATURES_DEFAULT is removed.
- filter_default_features() appends directly to
{DISTRO,MACHINE}_FEATURES.
- Follow through the consequences of the above changes.
- Changed in meta-yocto should no longer be needed.
- Link to v1: https://patch.msgid.link/20260328-default-features-v1-0-90790864d734@pbarker.dev

---
Paul Barker (4):
oelib: utils: Support filtering default features
meta: Support opting out of any distro features
meta: Support opting out of any machine features
lib: oe: Drop backfill support

meta/classes-global/base.bbclass | 7 +--
meta/classes-recipe/crosssdk.bbclass | 8 ++--
meta/classes-recipe/native.bbclass | 8 ++--
meta/classes-recipe/nativesdk.bbclass | 9 ++--
meta/conf/bitbake.conf | 3 +-
meta/conf/distro/include/default-distrovars.inc | 15 +++---
meta/conf/distro/include/tclibc-musl.inc | 2 +-
meta/conf/distro/include/tclibc-newlib.inc | 2 +-
meta/conf/distro/include/tclibc-picolibc.inc | 2 +-
meta/conf/documentation.conf | 8 ++--
meta/conf/machine/include/mips/arch-mips.inc | 2 +-
meta/conf/machine/include/powerpc/tune-power5.inc | 2 +-
meta/conf/machine/include/powerpc/tune-power6.inc | 2 +-
meta/conf/machine/include/powerpc/tune-power7.inc | 2 +-
.../conf/machine/include/powerpc/tune-ppce5500.inc | 2 +-
.../conf/machine/include/powerpc/tune-ppce6500.inc | 2 +-
meta/conf/machine/include/x86/arch-x86.inc | 2 +-
meta/lib/oe/utils.py | 53 ++++++++++++++--------
meta/lib/oeqa/selftest/cases/oelib/utils.py | 38 +++++++++++++++-
19 files changed, 110 insertions(+), 59 deletions(-)
---
base-commit: c56990178b31b893fbf695eaf6b67de501e9d2e9
change-id: 20260328-default-features-d7f43efcfb63

Best regards,
--
Paul Barker