[oe-commits] [openembedded-core] 05/20: externalsrc.bbclass: Make reparsing work for BBCLASSEXTENDed recipes

git at git.openembedded.org git at git.openembedded.org
Mon Sep 19 22:58:42 UTC 2016


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

commit 712b1926ee1c3c73b37d6649e06c98e69b53b224
Author: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
AuthorDate: Sat Sep 17 03:18:08 2016 +0200

    externalsrc.bbclass: Make reparsing work for BBCLASSEXTENDed recipes
    
    To make sure changes to any source files are detected when externalsrc
    is used, it sets BB_DONT_CACHE to force the recipe to be reparsed
    every time. Previously, this was done conditionally based on whether
    EXTERNALSRC was set. This worked fine for building the base recipe.
    But if one tried to build, e.g., a native version of it (provided via
    BBCLASSEXTEND), the recipe would not be reparsed as expected.
    
    To solve the above problem, BB_DONT_CACHE is now set for the base
    recipe if EXTERNALSRC is set for it or any of it derivatives.
    
    Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/externalsrc.bbclass | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index b7140a3..5c65d2b 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -29,6 +29,23 @@ EXTERNALSRC_SYMLINKS ?= "oe-workdir:${WORKDIR} oe-logs:${T}"
 
 python () {
     externalsrc = d.getVar('EXTERNALSRC', True)
+
+    # If this is the base recipe and EXTERNALSRC is set for it or any of its
+    # derivatives, then enable BB_DONT_CACHE to force the recipe to always be
+    # re-parsed so that the file-checksums function for do_compile is run every
+    # time.
+    bpn = d.getVar('BPN', True)
+    if bpn == d.getVar('PN', True):
+        classextend = (d.getVar('BBCLASSEXTEND', True) or '').split()
+        if (externalsrc or
+                ('native' in classextend and
+                 d.getVar('EXTERNALSRC_pn-%s-native' % bpn, True)) or
+                ('nativesdk' in classextend and
+                 d.getVar('EXTERNALSRC_pn-nativesdk-%s' % bpn, True)) or
+                ('cross' in classextend and
+                 d.getVar('EXTERNALSRC_pn-%s-cross' % bpn, True))):
+            d.setVar('BB_DONT_CACHE', '1')
+
     if externalsrc:
         d.setVar('S', externalsrc)
         externalsrcbuild = d.getVar('EXTERNALSRC_BUILD', True)
@@ -85,9 +102,6 @@ python () {
         d.prependVarFlag('do_compile', 'prefuncs', "externalsrc_compile_prefunc ")
         d.prependVarFlag('do_configure', 'prefuncs', "externalsrc_configure_prefunc ")
 
-        # Force the recipe to be always re-parsed so that the file_checksums
-        # function is run every time
-        d.setVar('BB_DONT_CACHE', '1')
         d.setVarFlag('do_compile', 'file-checksums', '${@srctree_hash_files(d)}')
 
         # We don't want the workdir to go away

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


More information about the Openembedded-commits mailing list