native/nativesdk: Use fixed DISTRO_FEATURES
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 DISTRO_FEATURES_NATIVE appended with an intersection of DISTRO_FEATURES and DISTRO_FEATURES_FILTER_NATIVE. Current default values (baitbake.conf) are * DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation" (as gtk-doc-native has much less dependencies when built without it) * DISTRO_FEATURES_NATIVE ?= "x11" (to enable native UIs even if target does not containe them) 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". Add similar variables for nativesdk. To make nativesdk work we need to enable the locale options so nativesdk-glibc-locales can build and to avoid the init manager check in the nativesdk case so add those fixes. (From OE-Core rev: 731744d5538e315702be828e6f2bd556309dee07) Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
f2e41a197f
commit
db1f1adace
|
@ -121,14 +121,20 @@ PATH_prepend = "${COREBASE}/scripts/native-intercept:"
|
||||||
SSTATE_SCAN_CMD ?= "${SSTATE_SCAN_CMD_NATIVE}"
|
SSTATE_SCAN_CMD ?= "${SSTATE_SCAN_CMD_NATIVE}"
|
||||||
|
|
||||||
python native_virtclass_handler () {
|
python native_virtclass_handler () {
|
||||||
classextend = e.data.getVar('BBCLASSEXTEND') or ""
|
|
||||||
if "native" not in classextend:
|
|
||||||
return
|
|
||||||
|
|
||||||
pn = e.data.getVar("PN")
|
pn = e.data.getVar("PN")
|
||||||
if not pn.endswith("-native"):
|
if not pn.endswith("-native"):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Set features here to prevent appends and distro features backfill
|
||||||
|
# from modifying native distro features
|
||||||
|
features = set(d.getVar("DISTRO_FEATURES_NATIVE").split())
|
||||||
|
filtered = set(bb.utils.filter("DISTRO_FEATURES", d.getVar("DISTRO_FEATURES_FILTER_NATIVE"), d).split())
|
||||||
|
d.setVar("DISTRO_FEATURES", " ".join(features | filtered))
|
||||||
|
|
||||||
|
classextend = e.data.getVar('BBCLASSEXTEND') or ""
|
||||||
|
if "native" not in classextend:
|
||||||
|
return
|
||||||
|
|
||||||
def map_dependencies(varname, d, suffix = ""):
|
def map_dependencies(varname, d, suffix = ""):
|
||||||
if suffix:
|
if suffix:
|
||||||
varname = varname + "_" + suffix
|
varname = varname + "_" + suffix
|
||||||
|
|
|
@ -70,6 +70,12 @@ python nativesdk_virtclass_handler () {
|
||||||
if not (pn.endswith("-nativesdk") or pn.startswith("nativesdk-")):
|
if not (pn.endswith("-nativesdk") or pn.startswith("nativesdk-")):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Set features here to prevent appends and distro features backfill
|
||||||
|
# from modifying nativesdk distro features
|
||||||
|
features = set(d.getVar("DISTRO_FEATURES_NATIVESDK").split())
|
||||||
|
filtered = set(bb.utils.filter("DISTRO_FEATURES", d.getVar("DISTRO_FEATURES_FILTER_NATIVESDK"), d).split())
|
||||||
|
d.setVar("DISTRO_FEATURES", " ".join(features | filtered))
|
||||||
|
|
||||||
e.data.setVar("MLPREFIX", "nativesdk-")
|
e.data.setVar("MLPREFIX", "nativesdk-")
|
||||||
e.data.setVar("PN", "nativesdk-" + e.data.getVar("PN").replace("-nativesdk", "").replace("nativesdk-", ""))
|
e.data.setVar("PN", "nativesdk-" + e.data.getVar("PN").replace("-nativesdk", "").replace("nativesdk-", ""))
|
||||||
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-nativesdk")
|
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-nativesdk")
|
||||||
|
|
|
@ -49,6 +49,8 @@ deltask do_install
|
||||||
deltask do_populate_sysroot
|
deltask do_populate_sysroot
|
||||||
|
|
||||||
python () {
|
python () {
|
||||||
|
if bb.data.inherits_class('nativesdk', d):
|
||||||
|
return
|
||||||
initman = d.getVar("VIRTUAL-RUNTIME_init_manager")
|
initman = d.getVar("VIRTUAL-RUNTIME_init_manager")
|
||||||
if initman and initman in ['sysvinit', 'systemd'] and not bb.utils.contains('DISTRO_FEATURES', initman, True, False, d):
|
if initman and initman in ['sysvinit', 'systemd'] and not bb.utils.contains('DISTRO_FEATURES', initman, True, False, d):
|
||||||
bb.fatal("Please ensure that your setting of VIRTUAL-RUNTIME_init_manager (%s) matches the entries enabled in DISTRO_FEATURES" % initman)
|
bb.fatal("Please ensure that your setting of VIRTUAL-RUNTIME_init_manager (%s) matches the entries enabled in DISTRO_FEATURES" % initman)
|
||||||
|
|
|
@ -789,6 +789,16 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""
|
||||||
EXTRA_IMAGE_FEATURES ??= ""
|
EXTRA_IMAGE_FEATURES ??= ""
|
||||||
IMAGE_FEATURES += "${EXTRA_IMAGE_FEATURES}"
|
IMAGE_FEATURES += "${EXTRA_IMAGE_FEATURES}"
|
||||||
|
|
||||||
|
# Native distro features (will always be used for -native, even if they
|
||||||
|
# are not enabled for target)
|
||||||
|
DISTRO_FEATURES_NATIVE ?= "x11"
|
||||||
|
DISTRO_FEATURES_NATIVESDK ?= "x11 libc-charsets libc-locales libc-locale-code"
|
||||||
|
|
||||||
|
# Normally target distro features will not be applied to native builds:
|
||||||
|
# Native distro features on this list will use the target feature value
|
||||||
|
DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation"
|
||||||
|
DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation"
|
||||||
|
|
||||||
DISTRO_FEATURES_BACKFILL = "pulseaudio sysvinit bluez5 gobject-introspection-data ldconfig"
|
DISTRO_FEATURES_BACKFILL = "pulseaudio sysvinit bluez5 gobject-introspection-data ldconfig"
|
||||||
MACHINE_FEATURES_BACKFILL = "rtc qemu-usermode"
|
MACHINE_FEATURES_BACKFILL = "rtc qemu-usermode"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue