diff options
author | Jaewon Lee <jaewon.lee@xilinx.com> | 2019-09-17 17:37:33 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-09-19 15:27:02 +0100 |
commit | 88db9e41c1fe9678b3a9002457de28e3007b328a (patch) | |
tree | 4f34efda432958776670c4c9a709fb6bf86af270 | |
parent | b418ececee2c22f334cc31f70aff71ba9571b431 (diff) | |
download | poky-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>
-rw-r--r-- | meta/classes/populate_sdk_ext.bbclass | 28 | ||||
-rw-r--r-- | meta/lib/oe/copy_buildsystem.py | 8 |
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" | |||
20 | SDK_EXT_TYPE ?= "full" | 20 | SDK_EXT_TYPE ?= "full" |
21 | SDK_INCLUDE_PKGDATA ?= "0" | 21 | SDK_INCLUDE_PKGDATA ?= "0" |
22 | SDK_INCLUDE_TOOLCHAIN ?= "${@'1' if d.getVar('SDK_EXT_TYPE') == 'full' else '0'}" | 22 | SDK_INCLUDE_TOOLCHAIN ?= "${@'1' if d.getVar('SDK_EXT_TYPE') == 'full' else '0'}" |
23 | SDK_INCLUDE_NATIVESDK ?= "0" | ||
23 | 24 | ||
24 | SDK_RECRDEP_TASKS ?= "" | 25 | SDK_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 | ||
684 | def 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 | |||
663 | def get_ext_sdk_depends(d): | 689 | def 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 | ||
180 | def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output): | 180 | def 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 |