gen-lockedsig-cache: copy correct native sstate into ext SDK

When constructing the sstate-cache directory for the extensible SDK,
we were copying in any matching native sstate packages, and as the
signature doesn't actually change when the distro changes (since
NATIVELSBSTRING is just a path separator for the artifacts and is not
part of the signature) we ended up copying duplicated packages when the
distro changed e.g. upon host distro upgrade. Only search in the
NATIVELSBSTRING-named subdirectory for native packages and the issue
goes away.

Fixes [YOCTO #8885].

(From OE-Core rev: 6c6baf6aa1823b8b20123f505e45c2768a193ad5)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2016-01-23 00:59:56 +13:00 committed by Richard Purdie
parent 204e4abbcd
commit 477fa84390
2 changed files with 6 additions and 5 deletions

View File

@ -149,8 +149,9 @@ def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_outpu
def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cache, d, fixedlsbstring=""):
bb.note('Generating sstate-cache...')
bb.process.run("gen-lockedsig-cache %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache))
nativelsbstring = d.getVar('NATIVELSBSTRING', True)
bb.process.run("gen-lockedsig-cache %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring))
if fixedlsbstring:
nativedir = output_sstate_cache + '/' + d.getVar('NATIVELSBSTRING', True)
nativedir = output_sstate_cache + '/' + nativelsbstring
if os.path.isdir(nativedir):
os.rename(nativedir, output_sstate_cache + '/' + fixedlsbstring)

View File

@ -13,9 +13,9 @@ def mkdir(d):
if e.errno != errno.EEXIST:
raise e
if len(sys.argv) < 3:
if len(sys.argv) < 5:
print("Incorrect number of arguments specified")
print("syntax: gen-lockedsig-cache <locked-sigs.inc> <input-cachedir> <output-cachedir>")
print("syntax: gen-lockedsig-cache <locked-sigs.inc> <input-cachedir> <output-cachedir> <nativelsbstring>")
sys.exit(1)
print('Reading %s' % sys.argv[1])
@ -30,7 +30,7 @@ files = set()
for s in sigs:
p = sys.argv[2] + "/" + s[:2] + "/*" + s + "*"
files |= set(glob.glob(p))
p = sys.argv[2] + "/*/" + s[:2] + "/*" + s + "*"
p = sys.argv[2] + "/%s/" % sys.argv[4] + s[:2] + "/*" + s + "*"
files |= set(glob.glob(p))
print('Processing files')