[OE-core] [oe-core][master][PATCH] Introduce mechanism to keep nativesdk* sstate in esdk
Jaewon Lee
JAEWON at xilinx.com
Thu Aug 29 17:13:39 UTC 2019
ping
> -----Original Message-----
> From: Jaewon Lee <jaewon.lee at xilinx.com>
> Sent: Monday, April 1, 2019 5:07 PM
> To: openembedded-core at lists.openembedded.org; Alejandro Enedino
> Hernandez Samaniego <alejandr at xilinx.com>; Manjukumar Harthikote
> Matha <MANJUKUM at xilinx.com>; Bruce Ashfield <brucea at xilinx.com>
> Cc: Jaewon Lee <JAEWON at xilinx.com>
> Subject: [oe-core][master][PATCH] Introduce mechanism to keep nativesdk*
> sstate in esdk
>
> Using SDK_INCLUDE_NATIVESDK flag to toggle inclusion of all nativesdk*
> sstate into esdk 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
>
> Signed-off-by: Jaewon Lee <jaewon.lee at xilinx.com>
> ---
> meta/classes/populate_sdk_ext.bbclass | 28
> +++++++++++++++++++++++++++-
> 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 40b0375..d98b0e5 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"
> 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) @@ -
> 658,9 +677,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) diff --git
> a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py
> index 7cb784c..5bc728e 100644
> --- a/meta/lib/oe/copy_buildsystem.py
> +++ b/meta/lib/oe/copy_buildsystem.py
> @@ -168,7 +168,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:
> @@ -178,7 +178,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
> --
> 2.7.4
More information about the Openembedded-core
mailing list