Hello,

oe-selftest fails:

https://autobuilder.yoctoproject.org/typhoon/#builders/87/builds/4504/steps/14/logs/stdio

On 06/12/2022 16:45:59+0000, Richard Purdie wrote:
> It seems some layers want to subvert the intent of LAYERSERIES_COMPAT
> so bitbake is going to have to become stricter about the values there.
> To work with this, use LAYERSERIES_CORENAMES to generate the entries in
> LAYERSERIES_COMPAT instead of the current magic LAYERSERIES_COMPAT_core
> value which may not continue to work.
> 
> The downside to this is when migating between releases, people would
> need to update devtool workspace layer.conf files. I guess you could
> argue this is a feature!
> 
> Signed-off-by: Richard Purdie <[email protected]>
> ---
> v2 - fix hangs with esdk building from bitbake lockfile contention by adding 
> --layerseries option
> 
>  meta/classes-recipe/populate_sdk_ext.bbclass |  3 +--
>  meta/lib/bblayers/create.py                  |  2 +-
>  meta/lib/oeqa/selftest/cases/devtool.py      |  5 +++--
>  meta/lib/oeqa/utils/commands.py              |  3 ++-
>  scripts/devtool                              | 15 ++++++++++++---
>  5 files changed, 19 insertions(+), 9 deletions(-)
> 
> diff --git a/meta/classes-recipe/populate_sdk_ext.bbclass 
> b/meta/classes-recipe/populate_sdk_ext.bbclass
> index 01d8a693a72..f78a9f4e9b2 100644
> --- a/meta/classes-recipe/populate_sdk_ext.bbclass
> +++ b/meta/classes-recipe/populate_sdk_ext.bbclass
> @@ -255,7 +255,7 @@ python copy_buildsystem () {
>      bbpath = d.getVar('BBPATH')
>      env = os.environ.copy()
>      env['PYTHONDONTWRITEBYTECODE'] = '1'
> -    bb.process.run(['devtool', '--bbpath', bbpath, '--basepath', 
> baseoutpath, 'create-workspace', '--create-only', os.path.join(baseoutpath, 
> 'workspace')], env=env)
> +    bb.process.run(['devtool', '--bbpath', bbpath, '--basepath', 
> baseoutpath, 'create-workspace', '--layerseries', 
> d.getVar("LAYERSERIES_CORENAMES"), '--create-only', os.path.join(baseoutpath, 
> 'workspace')], env=env)
>  
>      # Create bblayers.conf
>      bb.utils.mkdirhier(baseoutpath + '/conf')
> @@ -498,7 +498,6 @@ python copy_buildsystem () {
>      else:
>          tasklistfn = None
>  
> -
>      cachedir = os.path.join(baseoutpath, 'cache')
>      bb.utils.mkdirhier(cachedir)
>      bb.parse.siggen.copy_unitaskhashes(cachedir)
> diff --git a/meta/lib/bblayers/create.py b/meta/lib/bblayers/create.py
> index 0aeb5d5f7b5..c8f3f1b370e 100644
> --- a/meta/lib/bblayers/create.py
> +++ b/meta/lib/bblayers/create.py
> @@ -53,7 +53,7 @@ class CreatePlugin(LayerPlugin):
>          shutil.copy(license_src, license_dst)
>  
>          # Get the compat value for core layer.
> -        compat = self.tinfoil.config_data.getVar('LAYERSERIES_COMPAT_core') 
> or ""
> +        compat = self.tinfoil.config_data.getVar('LAYERSERIES_CORENAMES') or 
> ""
>  
>          # Create the layer.conf from templates/layer.conf
>          layerconf_template = read_template('layer.conf').format(
> diff --git a/meta/lib/oeqa/selftest/cases/devtool.py 
> b/meta/lib/oeqa/selftest/cases/devtool.py
> index 0cb7403f16e..c78a68be5b4 100644
> --- a/meta/lib/oeqa/selftest/cases/devtool.py
> +++ b/meta/lib/oeqa/selftest/cases/devtool.py
> @@ -1076,9 +1076,10 @@ class DevtoolUpdateTests(DevtoolBase):
>      def test_devtool_update_recipe_append_git(self):
>          # Check preconditions
>          testrecipe = 'mtd-utils-selftest'
> -        bb_vars = get_bb_vars(['FILE', 'SRC_URI'], testrecipe)
> +        bb_vars = get_bb_vars(['FILE', 'SRC_URI', 'LAYERSERIES_CORENAMES'], 
> testrecipe)
>          recipefile = bb_vars['FILE']
>          src_uri = bb_vars['SRC_URI']
> +        corenames = bb_vars['LAYERSERIES_CORENAMES']
>          self.assertIn('git://', src_uri, 'This test expects the %s recipe to 
> be a git recipe' % testrecipe)
>          for entry in src_uri.split():
>              if entry.startswith('git://'):
> @@ -1109,7 +1110,7 @@ class DevtoolUpdateTests(DevtoolBase):
>              f.write('BBFILE_PATTERN_oeselftesttemplayer = "^${LAYERDIR}/"\n')
>              f.write('BBFILE_PRIORITY_oeselftesttemplayer = "999"\n')
>              f.write('BBFILE_PATTERN_IGNORE_EMPTY_oeselftesttemplayer = 
> "1"\n')
> -            f.write('LAYERSERIES_COMPAT_oeselftesttemplayer = 
> "${LAYERSERIES_COMPAT_core}"\n')
> +            f.write('LAYERSERIES_COMPAT_oeselftesttemplayer = "%s"\n' % 
> corenames)
>          self.add_command_to_tearDown('bitbake-layers remove-layer %s || 
> true' % templayerdir)
>          result = runCmd('bitbake-layers add-layer %s' % templayerdir, 
> cwd=self.builddir)
>          # Create the bbappend
> diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py
> index f733fcdf3c8..f4daea25075 100644
> --- a/meta/lib/oeqa/utils/commands.py
> +++ b/meta/lib/oeqa/utils/commands.py
> @@ -300,6 +300,7 @@ def get_test_layer():
>  
>  def create_temp_layer(templayerdir, templayername, priority=999, 
> recipepathspec='recipes-*/*'):
>      os.makedirs(os.path.join(templayerdir, 'conf'))
> +    corenames = get_bb_var('LAYERSERIES_CORENAMES')
>      with open(os.path.join(templayerdir, 'conf', 'layer.conf'), 'w') as f:
>          f.write('BBPATH .= ":${LAYERDIR}"\n')
>          f.write('BBFILES += "${LAYERDIR}/%s/*.bb \\' % recipepathspec)
> @@ -308,7 +309,7 @@ def create_temp_layer(templayerdir, templayername, 
> priority=999, recipepathspec=
>          f.write('BBFILE_PATTERN_%s = "^${LAYERDIR}/"\n' % templayername)
>          f.write('BBFILE_PRIORITY_%s = "%d"\n' % (templayername, priority))
>          f.write('BBFILE_PATTERN_IGNORE_EMPTY_%s = "1"\n' % templayername)
> -        f.write('LAYERSERIES_COMPAT_%s = "${LAYERSERIES_COMPAT_core}"\n' % 
> templayername)
> +        f.write('LAYERSERIES_COMPAT_%s = "%s"\n' % (templayername, 
> corenames))
>  
>  @contextlib.contextmanager
>  def runqemu(pn, ssh=True, runqemuparams='', image_fstype=None, 
> launch_cmd=None, qemuparams=None, overrides={}, discard_writes=True):
> diff --git a/scripts/devtool b/scripts/devtool
> index 20d785c7f79..16605e1d1e2 100755
> --- a/scripts/devtool
> +++ b/scripts/devtool
> @@ -137,11 +137,19 @@ def create_workspace(args, config, basepath, workspace):
>          workspacedir = os.path.abspath(args.layerpath)
>      else:
>          workspacedir = os.path.abspath(os.path.join(basepath, 'workspace'))
> -    _create_workspace(workspacedir, config, basepath)
> +    if args.layerseries:
> +        layerseries = args.layerseries
> +    else:
> +        tinfoil = setup_tinfoil(config_only=True, basepath=basepath)
> +        try:
> +            layerseries = tinfoil.config_data.getVar('LAYERSERIES_CORENAMES')
> +        finally:
> +            tinfoil.shutdown()
> +    _create_workspace(workspacedir, config, basepath, layerseries)
>      if not args.create_only:
>          _enable_workspace_layer(workspacedir, config, basepath)
>  
> -def _create_workspace(workspacedir, config, basepath):
> +def _create_workspace(workspacedir, config, basepath, layerseries):
>      import bb
>  
>      confdir = os.path.join(workspacedir, 'conf')
> @@ -159,7 +167,7 @@ def _create_workspace(workspacedir, config, basepath):
>              f.write('BBFILE_PATTERN_workspacelayer = "^$' + '{LAYERDIR}/"\n')
>              f.write('BBFILE_PATTERN_IGNORE_EMPTY_workspacelayer = "1"\n')
>              f.write('BBFILE_PRIORITY_workspacelayer = "99"\n')
> -            f.write('LAYERSERIES_COMPAT_workspacelayer = 
> "${LAYERSERIES_COMPAT_core}"\n')
> +            f.write('LAYERSERIES_COMPAT_workspacelayer = "%s"\n' % 
> layerseries)
>          # Add a README file
>          with open(os.path.join(workspacedir, 'README'), 'w') as f:
>              f.write('This layer was created by the OpenEmbedded devtool 
> utility in order to\n')
> @@ -309,6 +317,7 @@ def main():
>                                                          description='Sets up 
> a new workspace. NOTE: other devtool subcommands will create a workspace 
> automatically as needed, so you only need to use %(prog)s if you want to 
> specify where the workspace should be located.',
>                                                          group='advanced')
>          parser_create_workspace.add_argument('layerpath', nargs='?', 
> help='Path in which the workspace layer should be created')
> +        parser_create_workspace.add_argument('--layerseries', help='Layer 
> series the workspace should be set to be compatible with')
>          parser_create_workspace.add_argument('--create-only', 
> action="store_true", help='Only create the workspace layer, do not alter 
> configuration')
>          parser_create_workspace.set_defaults(func=create_workspace, 
> no_workspace=True)
>  
> -- 
> 2.34.1
> 

> 
> 
> 


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#174349): 
https://lists.openembedded.org/g/openembedded-core/message/174349
Mute This Topic: https://lists.openembedded.org/mt/95496968/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to