I think this is the reason why extensible sdk is not building for me, key is I am not setting SDK_INCLUDE_NATIVESDK
The file local.conf.bak that it is not able to find to copy is actually inside sdk-ext/image/tmp-renamed-sdk/conf, So I wonder if renaming is happening inbetween copying ? Summary: 1 task failed: /mnt/b/yoe/build/tmp/work/qemuriscv64-yoe-linux-musl/yoe-simple-image/1.0-r0/sdk-ext/image/tmp-renamed-sdk/layers/openembedded-core/meta/recipes-core/meta/package-index.bb:do_package_index Summary: There was 1 ERROR message shown, returning a non-zero exit code. ERROR: yoe-simple-image-1.0-r0 do_populate_sdk_ext: Error executing a python function in exec_python_func() autogenerated: The stack trace of python calls that resulted in this exception/failure was: File: 'exec_python_func() autogenerated', lineno: 2, function: <module> 0001: *** 0002:copy_buildsystem(d) 0003: File: '/mnt/b/yoe/sources/openembedded-core/meta/classes/populate_sdk_ext.bbclass', lineno: 444, function: copy_buildsystem 0440: sdk_ext_type = d.getVar('SDK_EXT_TYPE') 0441: if (sdk_ext_type != 'minimal' or sdk_include_toolchain or derivative) and not sdk_include_nativesdk: 0442: # Create the filtered task list used to generate the sstate cache shipped with the SDK 0443: tasklistfn = d.getVar('WORKDIR') + '/tasklist.txt' *** 0444: create_filtered_tasklist(d, baseoutpath, tasklistfn, conf_initpath) 0445: else: 0446: tasklistfn = None 0447: 0448: if os.path.exists(builddir + '/cache/bb_unihashes.dat'): File: '/mnt/b/yoe/sources/openembedded-core/meta/classes/populate_sdk_ext.bbclass', lineno: 180, function: create_filtered_tasklist 0176: # Clean out residue of running bitbake, which check_sstate_task_list() 0177: # will effectively do 0178: clean_esdk_builddir(d, sdkbasepath) 0179: finally: *** 0180: os.replace(sdkbasepath + '/conf/local.conf.bak', sdkbasepath + '/conf/local.conf') 0181: 0182:python copy_buildsystem () { 0183: import re 0184: import shutil Exception: FileNotFoundError: [Errno 2] No such file or directory: '/mnt/b/yoe/build/tmp/work/qemuriscv64-yoe-linux-musl/yoe-simple-image/1.0-r0/sdk-ext/image//opt/yoe/3.0/conf/local.conf.bak' -> '/mnt/b/yoe/build/tmp/work/qemuriscv64-yoe-linux-musl/yoe-simple-image/1.0-r 0/sdk-ext/image//opt/yoe/3.0/conf/local.conf' ERROR: Logfile of failure stored in: /mnt/b/yoe/build/tmp/work/qemuriscv64-yoe-linux-musl/yoe-simple-image/1.0-r0/temp/log.do_populate_sdk_ext.1484013 On Wed, Sep 18, 2019 at 10:43 AM Jaewon Lee <jaewon....@xilinx.com> wrote: > > 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 > > Fixes [YOCTO #13261] > > Signed-off-by: Jaewon Lee <jaewon....@xilinx.com> > --- > changes in v2: > change to commit message to include reason > got rid of some tabs > rebased to apply on master > changes in v3: > fix patchwork failure for format of short commit message > --- > 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 800e117..086f55d 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) > @@ -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) > diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py > index cb663b2..31a84f5 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): > 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 > -- > 2.7.4 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core