mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 05:09:24 +00:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
b418ececee
commit
88db9e41c1
@@ -20,6 +20,7 @@ SDK_EXT_task-populate-sdk-ext = "-ext"
|
||||
SDK_EXT_TYPE ?= "full"
|
||||
SDK_INCLUDE_PKGDATA ?= "0"
|
||||
SDK_INCLUDE_TOOLCHAIN ?= "${@'1' if d.getVar('SDK_EXT_TYPE') == 'full' else '0'}"
|
||||
SDK_INCLUDE_NATIVESDK ?= "0"
|
||||
|
||||
SDK_RECRDEP_TASKS ?= ""
|
||||
|
||||
@@ -401,9 +402,27 @@ python copy_buildsystem () {
|
||||
excluded_targets = get_sdk_install_targets(d, images_only=True)
|
||||
sigfile = d.getVar('WORKDIR') + '/locked-sigs.inc'
|
||||
lockedsigs_pruned = baseoutpath + '/conf/locked-sigs.inc'
|
||||
#nativesdk-only sigfile to merge into locked-sigs.inc
|
||||
sdk_include_nativesdk = (d.getVar("SDK_INCLUDE_NATIVESDK") == '1')
|
||||
nativesigfile = d.getVar('WORKDIR') + '/locked-sigs_nativesdk.inc'
|
||||
nativesigfile_pruned = d.getVar('WORKDIR') + '/locked-sigs_nativesdk_pruned.inc'
|
||||
|
||||
if sdk_include_nativesdk:
|
||||
oe.copy_buildsystem.prune_lockedsigs([],
|
||||
excluded_targets.split(),
|
||||
nativesigfile,
|
||||
True,
|
||||
nativesigfile_pruned)
|
||||
|
||||
oe.copy_buildsystem.merge_lockedsigs([],
|
||||
sigfile,
|
||||
nativesigfile_pruned,
|
||||
sigfile)
|
||||
|
||||
oe.copy_buildsystem.prune_lockedsigs([],
|
||||
excluded_targets.split(),
|
||||
sigfile,
|
||||
False,
|
||||
lockedsigs_pruned)
|
||||
|
||||
sstate_out = baseoutpath + '/sstate-cache'
|
||||
@@ -414,7 +433,7 @@ python copy_buildsystem () {
|
||||
|
||||
sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN') == '1')
|
||||
sdk_ext_type = d.getVar('SDK_EXT_TYPE')
|
||||
if sdk_ext_type != 'minimal' or sdk_include_toolchain or derivative:
|
||||
if (sdk_ext_type != 'minimal' or sdk_include_toolchain or derivative) and not sdk_include_nativesdk:
|
||||
# Create the filtered task list used to generate the sstate cache shipped with the SDK
|
||||
tasklistfn = d.getVar('WORKDIR') + '/tasklist.txt'
|
||||
create_filtered_tasklist(d, baseoutpath, tasklistfn, conf_initpath)
|
||||
@@ -657,9 +676,16 @@ fakeroot python do_populate_sdk_ext() {
|
||||
d.setVar('SDKDEPLOYDIR', '${SDKEXTDEPLOYDIR}')
|
||||
# ESDKs have a libc from the buildtools so ensure we don't ship linguas twice
|
||||
d.delVar('SDKIMAGE_LINGUAS')
|
||||
if d.getVar("SDK_INCLUDE_NATIVESDK") == '1':
|
||||
generate_nativesdk_lockedsigs(d)
|
||||
populate_sdk_common(d)
|
||||
}
|
||||
|
||||
def generate_nativesdk_lockedsigs(d):
|
||||
import oe.copy_buildsystem
|
||||
sigfile = d.getVar('WORKDIR') + '/locked-sigs_nativesdk.inc'
|
||||
oe.copy_buildsystem.generate_locked_sigs(sigfile, d)
|
||||
|
||||
def get_ext_sdk_depends(d):
|
||||
# Note: the deps varflag is a list not a string, so we need to specify expand=False
|
||||
deps = d.getVarFlag('do_image_complete', 'deps', False)
|
||||
|
||||
@@ -177,7 +177,7 @@ def generate_locked_sigs(sigfile, d):
|
||||
tasks = ['%s:%s' % (v[2], v[1]) for v in depd.values()]
|
||||
bb.parse.siggen.dump_lockedsigs(sigfile, tasks)
|
||||
|
||||
def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output):
|
||||
def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, onlynative, pruned_output):
|
||||
with open(lockedsigs, 'r') as infile:
|
||||
bb.utils.mkdirhier(os.path.dirname(pruned_output))
|
||||
with open(pruned_output, 'w') as f:
|
||||
@@ -187,7 +187,11 @@ def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output
|
||||
if line.endswith('\\\n'):
|
||||
splitval = line.strip().split(':')
|
||||
if not splitval[1] in excluded_tasks and not splitval[0] in excluded_targets:
|
||||
f.write(line)
|
||||
if onlynative:
|
||||
if 'nativesdk' in splitval[0]:
|
||||
f.write(line)
|
||||
else:
|
||||
f.write(line)
|
||||
else:
|
||||
f.write(line)
|
||||
invalue = False
|
||||
|
||||
Reference in New Issue
Block a user