There seems to be little advantage to letting distro features affect native builds. There is a significant disadvantage: a change to DISTRO_FEATURES will trigger a lot of unnecessary native tasks. In a test like this: $ bitbake core-image-minimal # append " systemd" to DISTRO_FEATURES $ bitbake core-image-minimal The latter build takes 44 minutes (28%) of cpu-time less with this patch (skipping 135 native tasks). Sadly wall clock time was not affected as glibc remains the bottleneck.
Set native distro features to an intersection of DISTRO_FEATURES and DISTRO_FEATURES_FILTER_NATIVE (which is defined in bitbake.conf). Current filter includes only "api-documentation" (as gtk-doc-native has much less dependencies when built without it) Do the variable setting in native_virtclass_handler() because otherwise it could still be overridden by appends and the feature backfilling. Shuffle the early returns so DISTRO_FEATURES gets set as long as the packagename ends with "-native". Signed-off-by: Jussi Kukkonen <jussi.kukko...@intel.com> --- meta/classes/native.bbclass | 13 +++++++++---- meta/conf/bitbake.conf | 4 ++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass index 1919fbc..225e062 100644 --- a/meta/classes/native.bbclass +++ b/meta/classes/native.bbclass @@ -121,14 +121,19 @@ PATH_prepend = "${COREBASE}/scripts/native-intercept:" SSTATE_SCAN_CMD ?= "${SSTATE_SCAN_CMD_NATIVE}" python native_virtclass_handler () { - classextend = e.data.getVar('BBCLASSEXTEND') or "" - if "native" not in classextend: - return - pn = e.data.getVar("PN") if not pn.endswith("-native"): return + # Set features here to prevent appends and distro features backfill + # from modifying native distro features + features = bb.utils.filter("DISTRO_FEATURES", d.getVar("DISTRO_FEATURES_FILTER_NATIVE"), d) + d.setVar("DISTRO_FEATURES", features) + + classextend = e.data.getVar('BBCLASSEXTEND') or "" + if "native" not in classextend: + return + def map_dependencies(varname, d, suffix = ""): if suffix: varname = varname + "_" + suffix diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 5e98d45..c959960 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -789,6 +789,10 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= "" EXTRA_IMAGE_FEATURES ??= "" IMAGE_FEATURES += "${EXTRA_IMAGE_FEATURES}" +# Distro features that can affect native recipes (all other features +# will be removed for the -native case). +DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation" + DISTRO_FEATURES_BACKFILL = "pulseaudio sysvinit bluez5 gobject-introspection-data ldconfig" MACHINE_FEATURES_BACKFILL = "rtc qemu-usermode" -- 2.1.4 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core