]> code.ossystems Code Review - openembedded-core.git/commitdiff
lib/oe/sstatesig: Fix task mappings from multilib<->non-multilib contexts
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 2 Jul 2018 09:05:17 +0000 (09:05 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 2 Jul 2018 16:13:19 +0000 (17:13 +0100)
If we're in a multilib context already and want a non-multilib context
this function returned incorrect values.

Try and retain optimisations for the common case not needing to request
a datastore but allow the different multilib/non-multilib combinations
to work too.

This fixes bugs where rootfs generation of a multilib image would
write into incorrect locations, or be unable to find sstate manifest
files due to incorrect data stores being used to expand data.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/lib/oe/sstatesig.py

index b82e0f422ee136e2a040458b2f0def9214b33452..0aa577d44d2fa6462b8dee2d005cc0105f0f1f3b 100644 (file)
@@ -372,8 +372,14 @@ def sstate_get_manifest_filename(task, d):
 def find_sstate_manifest(taskdata, taskdata2, taskname, d, multilibcache):
     d2 = d
     variant = ''
+    curr_variant = ''
+    if d.getVar("BBEXTENDCURR") == "multilib":
+        curr_variant = d.getVar("BBEXTENDVARIANT")
+        if "virtclass-multilib" not in d.getVar("OVERRIDES"):
+            curr_variant = "invalid"
     if taskdata2.startswith("virtual:multilib"):
         variant = taskdata2.split(":")[2]
+    if curr_variant != variant:
         if variant not in multilibcache:
             multilibcache[variant] = oe.utils.get_multilib_datastore(variant, d)
         d2 = multilibcache[variant]