[gnome-continuous-yocto/gnomeostree-3.28-rocko: 5615/8267] native/nativesdk: Use fixed DISTRO_FEATURES
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 5615/8267] native/nativesdk: Use fixed DISTRO_FEATURES
- Date: Sun, 17 Dec 2017 03:41:19 +0000 (UTC)
commit db1f1adace58763c35774e3fdfeaac5c3ca646fd
Author: Jussi Kukkonen <jussi kukkonen intel com>
Date: Tue Apr 11 17:35:40 2017 +0300
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>
meta/classes/native.bbclass | 14 ++++++++++----
meta/classes/nativesdk.bbclass | 6 ++++++
meta/classes/packagegroup.bbclass | 2 ++
meta/conf/bitbake.conf | 10 ++++++++++
4 files changed, 28 insertions(+), 4 deletions(-)
---
diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass
index 1919fbc..aec1087 100644
--- a/meta/classes/native.bbclass
+++ b/meta/classes/native.bbclass
@@ -121,14 +121,20 @@ 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 = 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 = ""):
if suffix:
varname = varname + "_" + suffix
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index ebcfb2d..655b456 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -70,6 +70,12 @@ python nativesdk_virtclass_handler () {
if not (pn.endswith("-nativesdk") or pn.startswith("nativesdk-")):
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("PN", "nativesdk-" + e.data.getVar("PN").replace("-nativesdk", "").replace("nativesdk-",
""))
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-nativesdk")
diff --git a/meta/classes/packagegroup.bbclass b/meta/classes/packagegroup.bbclass
index 4af4a01..eea2e5b 100644
--- a/meta/classes/packagegroup.bbclass
+++ b/meta/classes/packagegroup.bbclass
@@ -49,6 +49,8 @@ deltask do_install
deltask do_populate_sysroot
python () {
+ if bb.data.inherits_class('nativesdk', d):
+ return
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):
bb.fatal("Please ensure that your setting of VIRTUAL-RUNTIME_init_manager (%s) matches the entries
enabled in DISTRO_FEATURES" % initman)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 5e98d45..af3937a 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -789,6 +789,16 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""
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"
MACHINE_FEATURES_BACKFILL = "rtc qemu-usermode"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]