summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Suti <peter.suti@streamunlimited.com>2023-07-31 11:34:15 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-08-11 09:36:05 +0100
commit2c4cb6dba3825421a92154a866f7481147fb390e (patch)
tree5713de5805715699deeade8c4dc799e4d27a8cd5
parent2850991c37f39a098bd15219af725f85b81417a0 (diff)
downloadpoky-2c4cb6dba3825421a92154a866f7481147fb390e.tar.gz
externalsrc: fix dependency chain issues
Instead of deleting setscene tasks, now SSTATE_SKIP_CREATION is set instead. This seems to fix the compile issues where the populate_sysroot task was not run when an externalsrc recipe was built as a dependency. [YOCTO #15164] [RP addition: The deltask was added by me in 2012 when the class was created. The trouble is bitbake assumes 'sstate' tasks have a setscene task and by deleting the setscene task, bitbake stops thinking the task can be accelerated. There is other code in the sysroot code which assumes some tasks are always sstate tasks. We cannot delete the task without changes to the way bitbake learns about 'setscene' tasks so the patch is correct, avoiding creating files is the better approach given the way the world works now. There would be concerns about exisitng sstate reuse however this shouldn't occur since SRC_URI changes and that will change the underlying hashes. Hash equivalency could potentially cause issues by joining hashes together again however if the output matches, that shouldn't in theory cause any issue.] (From OE-Core rev: ee4667a24ccdd8c9d547e73aecf661e6a1283890) Signed-off-by: Peter Suti <peter.suti@streamunlimited.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/externalsrc.bbclass7
1 files changed, 3 insertions, 4 deletions
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index b00fdba8e9..aedd78a03a 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -75,6 +75,8 @@ python () {
75 75
76 # Dummy value because the default function can't be called with blank SRC_URI 76 # Dummy value because the default function can't be called with blank SRC_URI
77 d.setVar('SRCPV', '999') 77 d.setVar('SRCPV', '999')
78 # sstate is never going to work for external source trees, disable it
79 d.setVar('SSTATE_SKIP_CREATION', '1')
78 80
79 if d.getVar('CONFIGUREOPT_DEPTRACK') == '--disable-dependency-tracking': 81 if d.getVar('CONFIGUREOPT_DEPTRACK') == '--disable-dependency-tracking':
80 d.setVar('CONFIGUREOPT_DEPTRACK', '') 82 d.setVar('CONFIGUREOPT_DEPTRACK', '')
@@ -82,10 +84,7 @@ python () {
82 tasks = filter(lambda k: d.getVarFlag(k, "task"), d.keys()) 84 tasks = filter(lambda k: d.getVarFlag(k, "task"), d.keys())
83 85
84 for task in tasks: 86 for task in tasks:
85 if task.endswith("_setscene"): 87 if os.path.realpath(d.getVar('S')) == os.path.realpath(d.getVar('B')):
86 # sstate is never going to work for external source trees, disable it
87 bb.build.deltask(task, d)
88 elif os.path.realpath(d.getVar('S')) == os.path.realpath(d.getVar('B')):
89 # Since configure will likely touch ${S}, ensure only we lock so one task has access at a time 88 # Since configure will likely touch ${S}, ensure only we lock so one task has access at a time
90 d.appendVarFlag(task, "lockfiles", " ${S}/singletask.lock") 89 d.appendVarFlag(task, "lockfiles", " ${S}/singletask.lock")
91 90