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

Reply via email to