summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorJaewon Lee <jaewon.lee@xilinx.com>2019-09-17 17:37:33 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-09-19 15:27:02 +0100
commit88db9e41c1fe9678b3a9002457de28e3007b328a (patch)
tree4f34efda432958776670c4c9a709fb6bf86af270 /meta
parentb418ececee2c22f334cc31f70aff71ba9571b431 (diff)
downloadpoky-88db9e41c1fe9678b3a9002457de28e3007b328a.tar.gz
populate_sdk_ext: Introduce mechanism to keep nativesdk* sstate in esdk
When doing a devtool build-sdk from within an esdk all nativesdk components would be rebuilt. This patch introduces SDK_INCLUDE_NATIVESDK flag to toggle the inclusion of nativesdk packages when creating the esdk sstate Currently locked-sigs.inc is generated during do_sdk_depends which doesn't pull in nativesdk packages. Generating another locked-sigs.inc in do_populate_sdk_ext and pruning it to only nativesdk* packages by using a modified version of the already existing function prune_locked_sigs and merging it with the current locked-sigs.inc Also adding SDK_INCLUDE_NATIVESDK tasklistfn to the logic surrounding setting tasklist file to not prune esdk sstate during creation [YOCTO #13261] (From OE-Core rev: d046afd12e1c209b29dca6ba402b9aa14680c5ce) Signed-off-by: Jaewon Lee <jaewon.lee@xilinx.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/populate_sdk_ext.bbclass28
-rw-r--r--meta/lib/oe/copy_buildsystem.py8
2 files changed, 33 insertions, 3 deletions
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index 800e1175d7..086f55df0c 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -20,6 +20,7 @@ SDK_EXT_task-populate-sdk-ext = "-ext"
20SDK_EXT_TYPE ?= "full" 20SDK_EXT_TYPE ?= "full"
21SDK_INCLUDE_PKGDATA ?= "0" 21SDK_INCLUDE_PKGDATA ?= "0"
22SDK_INCLUDE_TOOLCHAIN ?= "${@'1' if d.getVar('SDK_EXT_TYPE') == 'full' else '0'}" 22SDK_INCLUDE_TOOLCHAIN ?= "${@'1' if d.getVar('SDK_EXT_TYPE') == 'full' else '0'}"
23SDK_INCLUDE_NATIVESDK ?= "0"
23 24
24SDK_RECRDEP_TASKS ?= "" 25SDK_RECRDEP_TASKS ?= ""
25 26
@@ -401,9 +402,27 @@ python copy_buildsystem () {
401 excluded_targets = get_sdk_install_targets(d, images_only=True) 402 excluded_targets = get_sdk_install_targets(d, images_only=True)
402 sigfile = d.getVar('WORKDIR') + '/locked-sigs.inc' 403 sigfile = d.getVar('WORKDIR') + '/locked-sigs.inc'
403 lockedsigs_pruned = baseoutpath + '/conf/locked-sigs.inc' 404 lockedsigs_pruned = baseoutpath + '/conf/locked-sigs.inc'
405 #nativesdk-only sigfile to merge into locked-sigs.inc
406 sdk_include_nativesdk = (d.getVar("SDK_INCLUDE_NATIVESDK") == '1')
407 nativesigfile = d.getVar('WORKDIR') + '/locked-sigs_nativesdk.inc'
408 nativesigfile_pruned = d.getVar('WORKDIR') + '/locked-sigs_nativesdk_pruned.inc'
409
410 if sdk_include_nativesdk:
411 oe.copy_buildsystem.prune_lockedsigs([],
412 excluded_targets.split(),
413 nativesigfile,
414 True,
415 nativesigfile_pruned)
416
417 oe.copy_buildsystem.merge_lockedsigs([],
418 sigfile,
419 nativesigfile_pruned,
420 sigfile)
421
404 oe.copy_buildsystem.prune_lockedsigs([], 422 oe.copy_buildsystem.prune_lockedsigs([],
405 excluded_targets.split(), 423 excluded_targets.split(),
406 sigfile, 424 sigfile,
425 False,
407 lockedsigs_pruned) 426 lockedsigs_pruned)
408 427
409 sstate_out = baseoutpath + '/sstate-cache' 428 sstate_out = baseoutpath + '/sstate-cache'
@@ -414,7 +433,7 @@ python copy_buildsystem () {
414 433
415 sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN') == '1') 434 sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN') == '1')
416 sdk_ext_type = d.getVar('SDK_EXT_TYPE') 435 sdk_ext_type = d.getVar('SDK_EXT_TYPE')
417 if sdk_ext_type != 'minimal' or sdk_include_toolchain or derivative: 436 if (sdk_ext_type != 'minimal' or sdk_include_toolchain or derivative) and not sdk_include_nativesdk:
418 # Create the filtered task list used to generate the sstate cache shipped with the SDK 437 # Create the filtered task list used to generate the sstate cache shipped with the SDK
419 tasklistfn = d.getVar('WORKDIR') + '/tasklist.txt' 438 tasklistfn = d.getVar('WORKDIR') + '/tasklist.txt'
420 create_filtered_tasklist(d, baseoutpath, tasklistfn, conf_initpath) 439 create_filtered_tasklist(d, baseoutpath, tasklistfn, conf_initpath)
@@ -657,9 +676,16 @@ fakeroot python do_populate_sdk_ext() {
657 d.setVar('SDKDEPLOYDIR', '${SDKEXTDEPLOYDIR}') 676 d.setVar('SDKDEPLOYDIR', '${SDKEXTDEPLOYDIR}')
658 # ESDKs have a libc from the buildtools so ensure we don't ship linguas twice 677 # ESDKs have a libc from the buildtools so ensure we don't ship linguas twice
659 d.delVar('SDKIMAGE_LINGUAS') 678 d.delVar('SDKIMAGE_LINGUAS')
679 if d.getVar("SDK_INCLUDE_NATIVESDK") == '1':
680 generate_nativesdk_lockedsigs(d)
660 populate_sdk_common(d) 681 populate_sdk_common(d)
661} 682}
662 683
684def generate_nativesdk_lockedsigs(d):
685 import oe.copy_buildsystem
686 sigfile = d.getVar('WORKDIR') + '/locked-sigs_nativesdk.inc'
687 oe.copy_buildsystem.generate_locked_sigs(sigfile, d)
688
663def get_ext_sdk_depends(d): 689def get_ext_sdk_depends(d):
664 # Note: the deps varflag is a list not a string, so we need to specify expand=False 690 # Note: the deps varflag is a list not a string, so we need to specify expand=False
665 deps = d.getVarFlag('do_image_complete', 'deps', False) 691 deps = d.getVarFlag('do_image_complete', 'deps', False)
diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py
index cb663b21c6..31a84f5b06 100644
--- a/meta/lib/oe/copy_buildsystem.py
+++ b/meta/lib/oe/copy_buildsystem.py
@@ -177,7 +177,7 @@ def generate_locked_sigs(sigfile, d):
177 tasks = ['%s:%s' % (v[2], v[1]) for v in depd.values()] 177 tasks = ['%s:%s' % (v[2], v[1]) for v in depd.values()]
178 bb.parse.siggen.dump_lockedsigs(sigfile, tasks) 178 bb.parse.siggen.dump_lockedsigs(sigfile, tasks)
179 179
180def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output): 180def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, onlynative, pruned_output):
181 with open(lockedsigs, 'r') as infile: 181 with open(lockedsigs, 'r') as infile:
182 bb.utils.mkdirhier(os.path.dirname(pruned_output)) 182 bb.utils.mkdirhier(os.path.dirname(pruned_output))
183 with open(pruned_output, 'w') as f: 183 with open(pruned_output, 'w') as f:
@@ -187,7 +187,11 @@ def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output
187 if line.endswith('\\\n'): 187 if line.endswith('\\\n'):
188 splitval = line.strip().split(':') 188 splitval = line.strip().split(':')
189 if not splitval[1] in excluded_tasks and not splitval[0] in excluded_targets: 189 if not splitval[1] in excluded_tasks and not splitval[0] in excluded_targets:
190 f.write(line) 190 if onlynative:
191 if 'nativesdk' in splitval[0]:
192 f.write(line)
193 else:
194 f.write(line)
191 else: 195 else:
192 f.write(line) 196 f.write(line)
193 invalue = False 197 invalue = False