[oe-commits] [openembedded-core] 02/03: native/nativesdk: Use fixed DISTRO_FEATURES

git at git.openembedded.org git at git.openembedded.org
Tue Apr 11 17:27:19 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit cde042564f42e62a1333fa00e62a7d4a52c3e3a0
Author: Jussi Kukkonen <jussi.kukkonen at intel.com>
AuthorDate: 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.
    
    Signed-off-by: Jussi Kukkonen <jussi.kukkonen at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/native.bbclass    | 14 ++++++++++----
 meta/classes/nativesdk.bbclass |  6 ++++++
 meta/conf/bitbake.conf         |  9 +++++++++
 3 files changed, 25 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/conf/bitbake.conf b/meta/conf/bitbake.conf
index 5e98d45..dca6bd4 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -789,6 +789,15 @@ 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"
+# 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"
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list