oe.utils.both_contain() just does a find() on the value rather than splitting the value and then looking in the list of split items. The result is that if you add a feature to MACHINE_FEATURES that itself has a substring that matches one of the values looked for when building COMBINED_FEATURES, you end up with an incomprehensible error (here with "ext2i" in MACHINE_FEATURES): ERROR: Nothing RPROVIDES 'packagegroup-base-ext2' (but /home/balister/src/oe-core/oe-core/meta/recipes-core/packagegroups/packagegroup-base.bb RDEPENDS on or otherwise requires it)
Investigation started.
oe.utils.both_contain() will be reimplemented similar to bb.utils.contains().
Patch sent for review.
Fixed with commit http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=ca3a3c05414f52bd9c2c9774248b7b74b60df20c